у меня два BorderPane
. Вторая полностью покрывает первую другими элементами управления, но прозрачна.
Когда отображается вторая, только элементы управления во второй панели можно щелкать мышью. Но событие Keyboard, похоже, перехватывается первой BorderPane
.
Когда я нажимаю клавишу Tab , она начинает смещать фокус на элементы управления на первой панели и клавишу Пробел на самом деле нажимает кнопки на панели1
Больше Вкладка щелчки также дают фокус элементам управления на второй панели.
Как это предотвратить? Я хочу, чтобы события клавиатуры работали только на второй панели, и когда при фокусе Tab должны быть только поперечные элементы управления на второй панели, поскольку она покрыта первой.
Кроме того, кнопка на второй панели должен получить фокус автоматически.
public class MyFxApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("My First JavaFX App");
Button btn = new Button("pane 1 b1");
Button btn_1 = new Button("pane 1 b2");
Button btn2 = new Button("pane2 b1");
StackPane body = new StackPane();
BorderPane pane1 = new BorderPane(btn);
pane1.setBottom(btn_1);
BorderPane pane2 = new BorderPane();
pane2.setTop(btn2);
btn2.setAlignment(Pos.TOP_CENTER);
body.getChildren().addAll(pane1, pane2);
//Pane2 is on top.
//Btn in Pane1 is not clickable
Scene scene = new Scene(body, 600, 400);
pane1.prefWidthProperty().bind(scene.widthProperty());
pane1.prefHeightProperty().bind(scene.heightProperty());
pane2.prefWidthProperty().bind(scene.widthProperty());
pane2.prefHeightProperty().bind(scene.heightProperty());
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}