我需要在应用程序启动时加载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
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解决方案,但它对我(两者)都不起作用。
有人可以帮忙解决问题吗?
答案 0 :(得分:4)
lookup(...)
通常会返回null,直到CSS传递完成,这通常意味着您需要在显示阶段之后(但可能在此之后)执行此操作。
但这并不是你正在尝试做的事情的正确方法。定义控制器,在fx:id
上设置TreeView
并在控制器的initialize()
方法中执行初始化。