javafx - JavaFX 控制器返回 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();
}
推荐阅读
- django - Django在不知道相关模型的情况下以一对一的关系获取相关对象
- python - 带有变量和输入的字典问题
- javascript - 如何在我的 Rails 应用资产管道中仅使用 SwiperJS 库的核心组件?
- javascript - 将数据从对象数组发送到组件
- python - 使用 svd 方法修复图像(伪反转)
- python - Python - 从列表中排序数字
- javascript - 简单的javascript条件
- javascript - 使用 Sanity npm 包的 Jest 模拟测试
- python - 带有下拉变量选择器的 Altair 热图
- node.js - 想通过比较续集nodejs中的日期来重置订单ID