JavaFX从控制器获取场景

时间:2014-09-26 13:33:03

标签: java javafx-2 keylistener scenebuilder

我最近开始使用Java FX,FXML和场景构建器,并且我一直在尝试将关键监听器添加到场景的其中一个控制器中。但是当我这样做的时候,关键的听众并没有按照自己的意愿工作,我认为这是因为他们没有专注于那个特定的场景。我试图访问控制器所属的场景,以便直接设置它,但它出现了它是空场景的一部分。

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

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:17)

使用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
    }

}
相关问题