从场景事件过滤器访问JavaFX当前控制器

时间:2019-03-21 20:00:06

标签: events javafx controller scene

我是JavaFX的新手,但未完成我需要做的事情: 我以这种方式更改场景,同时定义了一个事件过滤器:

    AnchorPane pane = FXMLLoader.load(getClass().getResource("blabla.fxml"));
    Scene scene = new Scene(pane);

    scene.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
                        public void handle(KeyEvent event) {
                            System.out.println("Filtering event " + event.getEventType() + ", " + event.getCode());

        //Here in the handle method I want to call a method of the current controller

                        }
                    });

     Stage appStage = (Stage) ((Node) event.getSource()).getScene().getWindow();
     appStage.setScene(scene);

 appStage.show();

在事件过滤器的handle方法中,我想执行已加载控制器的特定方法(更改图像)。我无法将setOnKeyPressed放置在此控制器中,因为关联的fxml仅捕获了按键图像,因此无法捕获。我读到我不得不在场景上使用addEventFilter。 有用。 正确触发了handle方法,但我不知道如何访问与“ blabla.fxml”关联的控制器上的方法。

非常感谢您的帮助。

多米尼克

0 个答案:

没有答案