стека области javafx KeyEvent - PullRequest
       0

стека области javafx KeyEvent

0 голосов
/ 05 февраля 2020

у меня два 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...