package menu_28393_leftright; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.input.KeyEvent; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.stage.Popup; import javafx.stage.Stage; public class RT28393_NoControls extends Application { private EventHandler keyEventHandler; @Override public void start(Stage stage) { stage.setTitle("Hello Popup"); stage.setWidth(300); stage.setHeight(300); Rectangle rect1 = focusableRect(); Rectangle rect2 = focusableRect(); Rectangle rect3 = focusableRect(); Rectangle rect4 = focusableRect(); VBox sVbox1 = new VBox(20); HBox sHbox1 = new HBox(); sHbox1.getChildren().addAll(rect1, rect2); HBox sHbox2 = new HBox(); sHbox2.getChildren().addAll(rect3, rect4); Scene scene = new Scene(sVbox1); ((VBox)scene.getRoot()).getChildren().addAll(sHbox1, sHbox2); keyEventHandler = new EventHandler() { @Override public void handle(KeyEvent event) { System.out.println(">>>>> Main scene : handle key event"); switch (event.getCode()) { case LEFT: System.out.println(">>>>> Main scene : LEFT"); event.consume(); break; case RIGHT: System.out.println(">>>>> Main scene : RIGHT"); event.consume(); break; case DOWN: System.out.println(">>>>> Main scene : DOWN"); event.consume(); break; case UP: System.out.println(">>>>> Main scene : UP"); event.consume(); break; default: break; } } }; scene.addEventFilter(KeyEvent.KEY_PRESSED, keyEventHandler); Popup popup = new Popup(); popup.setAutoHide(false); Group pGroup = new Group(); Rectangle r = new Rectangle(); r.setWidth(200); r.setHeight(200); r.setFill(Color.BLUE); Rectangle pRect1 = focusableRect(); Rectangle pRect2 = focusableRect(); Rectangle pRect3 = focusableRect(); Rectangle pRect4 = focusableRect(); VBox pVbox1 = new VBox(20); HBox pHbox1 = new HBox(); pHbox1.getChildren().addAll(pRect1, pRect2); HBox pHbox2 = new HBox(); pHbox2.getChildren().addAll(pRect3, pRect4); pVbox1.getChildren().addAll(pHbox1, pHbox2); pGroup.getChildren().addAll(r, pVbox1); popup.getContent().add(pGroup); stage.setScene(scene); stage.show(); popup.show(stage, 500.0, 500.0); } public static void main(String[] args) { Application.launch(args); } private Rectangle focusableRect() { final Rectangle rect = new Rectangle(50,50); rect.setFocusTraversable(true); rect.setFill(Color.BLUE); final ChangeListener focusListener1 = new ChangeListener() { @Override public void changed(ObservableValue ov, Boolean t, Boolean t1) { if (t1) { rect.setFill(Color.RED); } else { rect.setFill(Color.GREEN); } } }; rect.focusedProperty().addListener(focusListener1); return rect; } }