У меня есть два файла fxml
. Я соединить их с include
заявлением:Впрыск контроллера JavaFX не работает
"Основной" fxml
файл выглядит следующим образом:
<?import javafx.geometry.*?>
// ...
<BorderPane prefHeight="962" prefWidth="1280" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MyMainController">
<center>
<SplitPane dividerPositions="0.63" BorderPane.alignment="CENTER">
<items>
<fx:include source="AnotherFile.fxml" />
// ...
</items>
</SplitPane>
</center>
<top>
// ...
</top>
</BorderPane>
И второй (= "AnotherFile.fxml") так:
<?import java.lang.*?>
// ...
<SplitPane dividerPositions="0.15" orientation="VERTICAL" prefHeight="400.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
<items>
// ...
<Label fx:id="oneOfMyLabels" text="myText" GridPane.columnIndex="2" GridPane.rowIndex="1" />
</items>
</SplitPane>
Теперь я использую инъекции в "основной" -controller application.MyMainController
:
@FXML
private Label oneOfMyLabels;
Если я запускаю контроллер, я получаю исключение java.lang.NullPointerException
, соответственно java.lang.reflect.InvocationTargetException
. В режиме отладки выяснилось, что введенный Label
- null
!
Теперь, мой вопрос: Не удается связаться с MyMainController
из файла "main fxml" в составе прилагаемого файла fxml? Должен ли я использовать собственный контроллер для каждого файла fxml, если он включен или нет?
Спасибо за помощь!
Следует помнить, что корневой элемент включенного файла fxml должен содержать собственный атрибут fx: controller! – mrbela
Есть ли возможность вставить «MyMainController» в 'AnotherController'? Мне нужно вызвать метод в основном контроллере из дополнительного контроллера ... – mrbela