JavaFX从控制器获取场景

Kea*_*nu 6 java keylistener javafx-2 scenebuilder

我最近开始玩Java FX,FXML和场景构建器,我一直在尝试将关键监听器添加到场景的一个控制器中.但是,当我这样做时,关键的听众不能正常工作,我认为这是因为他们没有专注于那个特定的场景.我试图访问控制器所属的场景,以便直接设置它,但它出现了它是空场景的一部分.

有没有办法获得对使用此控制器的场景的访问权限,以便尝试将关键事件和侦听器分配给该特定场景?我应该通过整个应用程序中的静态rootController吗?或者,更好的是,有更简单的方法来解决这个问题吗?

我看到的大多数示例都假设所有内容大部分都在主类中,或者在没有引入FXML的情况下分成几个其他类,并且我不确定如何在使用java控制器,FXML页面时应用它们的修复程序,以及主要应用程序全部分开.

谢谢你的帮助!

Ita*_*iha 18

使用Controller中绑定的任何控件并getScene()在其上使用.

请记住不要使用它,initialize()因为在initialize()为控制器调用时,根元素(虽然已完全处理)仍未放置在场景中

public class WindowMainController implements Initializable {

    @FXML
    private Button button;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        System.out.println(button.getScene()); // Gives you the Scene
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        System.out.println(button.getScene()); // Prints null
    }

}
Run Code Online (Sandbox Code Playgroud)