首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的观点不再与它的控制器沟通,因为控制器是手动设置的?

为什么我的观点不再与它的控制器沟通,因为控制器是手动设置的?
EN

Stack Overflow用户
提问于 2019-01-06 11:40:50
回答 1查看 63关注 0票数 0

自从我手动设置控制器以来,相应的视图似乎无法识别我的控制器。没有一个视图元素被我的控制器识别,也没有一个我的Controller方法被他们的视图所识别。当我在视图中的onaction='#...eventHandler'上悬停时,它说没有为顶层元素指定控制器。

但是,我已经设置了控制器(这是主控制器,然后在其他地方设置了另一个控制器,用于弹出窗口):

代码语言:javascript
复制
FXMLLoader loader = new FXMLLoader(getClass().getResource("foodDiaryView.fxml"));
        FoodDiary foodDiary = new FoodDiary();
        FoodDiaryController controller = new FoodDiaryController(foodDiary);
        loader.setController(controller);
        Parent root = loader.load();
        primaryStage.setTitle("Food Diary");
        primaryStage.setScene(new Scene(root, 720, 480));
        primaryStage.show();

当我运行程序时,我会得到以下错误:

代码语言:javascript
复制
Exception in Application start method
java.lang.reflect.InvocationTargetException
...
Caused by: java.lang.NullPointerException at sample.FoodDiaryController.initialize(FoodDiaryController.java:72)

这恰好是引用视图中的元素的第一行代码:

代码语言:javascript
复制
@FXML private TableView<Food> breakfastTable;

然后在初始化(line 72)中导致NullPointerException

代码语言:javascript
复制
breakfastTable.setItems(foodDiary.getBreakfastFoods());

有人可能会提到为什么会发生这种事吗?

前提条件:

  • 我必须手动设置控制器,因为我没有在控制器中使用no-arg构造函数。
  • 我用的是IntelliJ
EN

回答 1

Stack Overflow用户

发布于 2019-01-06 13:36:55

我可能错了,现在无法检查,但我记得在使用setController和setControllerFactory时出现了一些问题。我认为,当您在FXML中指定了fx:控制器时,您就不能使用setController,而是必须使用setControllerFactory或类似的东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54061139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档