2014-10-12 79 views
0

与场景生成器2 I创建的场景与以下结构:元素查找由ID没有结果

BorderPane - > SplitPane - > AnchroPane - > SplitPane - > AnchorBane。 (http://pastebin.com/7LTNh1Jv

第二个SplitPane中的AnchorPane具有ID 工作台 - 锚点。现在,我尝试通过获得这个AnchorPane的参考:

final BorderPane rootPane = loader.load(); 
final Node node = rootPane.lookup("#workbench-anchor"); 

节点始终是NULL。

有谁知道我在做什么错?

非常感谢!

回答

1

直到应用CSS为止,查找功能将无法工作,这通常发生在第一帧渲染上。在显示舞台后,您可以尝试执行查找。您也可以在查找之前通过致电

rootPane.applyCSS(); 

来强制执行此操作。

一般来说,查找并不是寻找场景图(imho)元素的非常稳健的方法。在控制器类中进行任何初始化工作可能更好,使用@FXML注入来引用节点。

+0

@JamesD感谢您的回答!有没有在控制器类中自动调用的方法,我可以做这些初始化的东西? – Hannes 2014-10-12 15:32:22

+1

在load()方法返回之前,''initialize()'方法在所有内容被加载并且'@ FXML'字段被注入后被调用。请参阅文档的[Controller]部分(http://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#controllers)。 – 2014-10-12 15:36:50

+0

控制器类需要与FXML文件在同一个文件夹(而不仅仅是包)中有一个原因吗? – Hannes 2014-10-12 16:34:12