Javafx 为什么我的视图不再与其控制器通信,因为控制器是手动设置的?

Javafx 为什么我的视图不再与其控制器通信,因为控制器是手动设置的?,javafx,model-view-controller,nullpointerexception,javafx-8,fxml,Javafx,Model View Controller,Nullpointerexception,Javafx 8,Fxml,自从我手动设置控制器以来,相应的视图似乎无法识别我的控制器。“我的控制器”无法识别任何视图元素,其视图也无法识别任何“我的控制器”方法。当我将鼠标悬停在视图中的onaction='#…eventHandler'上时,它表示没有为顶级元素指定控制器 但是,我已经设置了控制器(这是主控制器,然后在其他地方为弹出窗口设置了另一个控制器): 当我运行该程序时,出现以下错误: Exception in Application start method java.lang.reflect.Invocatio

自从我手动设置控制器以来,相应的视图似乎无法识别我的控制器。“我的控制器”无法识别任何视图元素,其视图也无法识别任何“我的控制器”方法。当我将鼠标悬停在视图中的
onaction='#…eventHandler'
上时,它表示没有为顶级元素指定控制器

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

当我运行该程序时,出现以下错误:

Exception in Application start method
java.lang.reflect.InvocationTargetException
...
Caused by: java.lang.NullPointerException at sample.FoodDiaryController.initialize(FoodDiaryController.java:72)
这恰好是引用视图中某个图元的第一行代码:

@FXML private TableView<Food> breakfastTable;
有谁能暗示为什么会发生这种情况

先决条件:

  • 我必须手动设置我的控制器,因为我没有对控制器使用无参数构造函数
  • 我在用IntelliJ

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

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

@kleopatra我在发布之前确实阅读了此指南,但我真的不知道问题出在哪里,因此无法给出示例。将其上传到Github回购并链接是一个好主意吗?如果没有,您有什么建议?只需在手动设置控制器之后/之前生成一个有/没有问题的简短示例,并将其发布到此处:)@geogebaker
foodDiaryView.fxml
缺失(将示例限制为根元素&
),查看所涉及的
FoodDiaryController
部分也会很有好处(
breakfastTable
declaration,
foodDiary
constructor中的声明和赋值,
initialize
part设置项目)。还要确保你没有通过最小化示例删除导致问题的部分。投票决定暂时不生产MCVE关闭…@kleopatra我在发布之前阅读了此指南,但我真的不知道问题来自何处,因此无法生成示例。将此上传到Github回购和链接是一个好主意吗?如果不,您有什么建议?只需在手动设置控制器后/之前生成一个有/没有问题的简短示例,并将其发布到此处:)@GeorgeBaker
fooddaryview.fxml
缺失(将示例限制到根元素&
),并且查看所涉及的
fooddaryController
的部分也将是有益的(
breakfastTable
declaration,
foodDiary
constructor中的声明和赋值,
initialize
part设置项目)。另外,请确保您没有通过最小化示例删除导致问题的部件。投票支持关闭,因为目前不生产MCVE…我尝试使用setControllerFactory,回答如下:但是这对我不起作用,我在加载时仍然会出错()。感谢您的建议!我尝试使用setControllerFactory,如下所示:但是这对我不起作用,我在加载()时仍然收到错误。感谢您的建议!
@FXML private TableView<Food> breakfastTable;
breakfastTable.setItems(foodDiary.getBreakfastFoods());