我正在尝试调用 OverviewController 中的 setTodos 函数。当我以这种方式尝试时它不起作用,因为控制器为空。任何人都知道这里的问题可能是什么? (不太了解JavaFX...)
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("view/JavaTodoApp.fxml"));
primaryStage.setTitle("JavaTodoApp");
primaryStage.setScene(new Scene(root, 600, 500));
primaryStage.show();
// access to controller
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("view/JavaTodoApp.fxml"));
OverviewController controller = loader.getController();
controller.setTodos(this);
}
答案 0 :(得分:1)
您需要从您创建的 FXMLLoader
实例加载 FXML,而不是从静态方法。
@Override
public void start(Stage primaryStage) throws Exception {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("view/JavaTodoApp.fxml"));
Parent root = loader.load();
OverviewController controller = loader.getController();
controller.setTodos(this);
primaryStage.setTitle("JavaTodoApp");
primaryStage.setScene(new Scene(root, 600, 500));
primaryStage.show();
}