С тех пор, как я вручную установил свои контроллеры, соответствующие представления, кажется, не распознают мои контроллеры. Ни один из элементов представления не распознается моими контроллерами, и ни один из моих методов контроллера не распознается их представлениями. Когда я нахожу курсор мыши над 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());
Кто-нибудь, кто мог бы сослаться на то, почему это происходит?
Требования:
- Я должен установить свои контроллеры вручную, так как я не использую конструктор без аргументов с моими контроллерами.
- Я использую IntelliJ