JavaFX-8 - 无法在SplitPane容器中找到任何节点

时间:2014-08-27 15:54:04

标签: java javafx javafx-8

我需要在应用程序启动时加载JavaFX TreeView数据。问题是node lookup()方法总是返回null。

CODE

public class Main extends Application {

    public static final String APPLICATION_NAME = "testapp" ;

    public static void main(String args[]) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        String fxml = "/fxml/main-window.fxml";
        String globalCss = "/styles/main.css";
        FXMLLoader loader = new FXMLLoader(getClass().getResource(fxml));
        Parent root = (Parent) loader.load();
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.getScene().getStylesheets().add(globalCss);
        primaryStage.setMaximized(true);

        TreeView treevw = (TreeView) scene.lookup("#treevw");
        // lazy init here

        primaryStage.show();
    }
}

FXML

http://pastebin.com/aC2gHMjp

java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

我找到了this解决方案,但它对我(两者)都不起作用。

有人可以帮忙解决问题吗?

1 个答案:

答案 0 :(得分:4)

lookup(...)通常会返回null,直到CSS传递完成,这通常意味着您需要在显示阶段之后(但可能在此之后)执行此操作。

但这并不是你正在尝试做的事情的正确方法。定义控制器,在fx:id上设置TreeView并在控制器的initialize()方法中执行初始化。