JavaFX 控制器 returns 空
JavaFX Controller returns null
我正在尝试调用 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);
}
您需要从您创建的 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();
}
我正在尝试调用 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);
}
您需要从您创建的 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();
}