自从我手动设置控制器以来,相应的视图似乎无法识别我的控制器。没有一个视图元素被我的控制器识别,也没有一个我的Controller方法被他们的视图所识别。当我在视图中的onaction='#...eventHandler'上悬停时,它说没有为顶层元素指定控制器。
但是,我已经设置了控制器(这是主控制器,然后在其他地方设置了另一个控制器,用于弹出窗口):
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();当我运行程序时,我会得到以下错误:
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;然后在初始化(line 72)中导致NullPointerException
breakfastTable.setItems(foodDiary.getBreakfastFoods());有人可能会提到为什么会发生这种事吗?
前提条件:
发布于 2019-01-06 13:36:55
我可能错了,现在无法检查,但我记得在使用setController和setControllerFactory时出现了一些问题。我认为,当您在FXML中指定了fx:控制器时,您就不能使用setController,而是必须使用setControllerFactory或类似的东西。
https://stackoverflow.com/questions/54061139
复制相似问题