Внимательно посмотрите на трассировку стека:
...
Caused by: javafx.fxml.LoadException:
/D:/Programming/Java/javastart/ssmaker/target/classes/fxml/buttonsPane.fxml
/D:/Programming/Java/javastart/ssmaker/target/classes/fxml/mainPane.fxml:17
...
Caused by: java.lang.NullPointerException
at ssmaker/com.lanssmaker.controller.LogPaneController.initialize(LogPaneController.java:25)
Это означает, что исключение происходит, когда вы загружаете buttonsPane.fxml
, когда FXMLLoader
имеет дело с элементом
<fx:include source="buttonsPane.fxml"/>
.
Более того, он говорит мне, что вы используете не только LogPaneController
для logPane.fxml
, но и для buttonsPane.fxml
.Отдельные экземпляры контроллера создаются каждый раз, когда вы загружаете fxml;использование <fx:include>
приводит к созданию отдельного экземпляра FXMLLoader
для загрузки включенного fxml.Поле logTable
вводится только для одного из них;для другого экземпляра контроллера он остается null
.(Это даже игнорирует тот факт, что загрузка buttonsPane.fxml
происходит перед загрузкой logPane.fxml
, поэтому даже если тот же экземпляр контроллера использовался во время загрузки buttonsPane.fxml
, TableView
не был создан на основе logPane.fxml
.)
Используйте отдельные классы контроллеров для buttonsPane.fxml
и logPane.fxml
.Вы не сможете заставить оба fxmls «общаться», просто используя один и тот же класс контроллера.Я бы предложил альтернативу, но то, что вы там делаете, не имеет никакого смысла (кроме попытки спровоцировать NPE): isHover
просто возвращает значение свойства hover
, которое всегда равно false
дляузлы, которые еще не являются частью Scene
.