У меня есть FXML-приложение с main.fxml, которое включает в себя два других файла fxml.Каждый из этих файлов fxml имеет свой собственный класс контроллеров.
Мой вопрос заключается в том, как получить доступ к объектам из определенного контроллера, хотя эти объекты определены в другом файле fxml.
Следующий код является лишь минимальным примером.Я подумал, что было бы неплохо разделить элементы пользовательского интерфейса на разные fxml-файлы, потому что они становятся все больше и больше.
Мой основной fxml:
<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="MainController">
<fx:include fx:id="top" source="top.fxml"/>
<fx:include fx:id="bottom" source="bottom.fxml"/>
</VBox>
top.fxml:
<VBox fx:id="vbox" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="ControllerTop">
<children>
<Button fx:id="topbtn" onAction="#printOutput" text="OK" />
</children>
</VBox>
bottom.fxml
<VBox fx:id="vbox" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="ControllerBottom">
<children>
<Button fx:id="bottombtn" onAction="#printOutput" text="OK" />
</children>
</VBox>
Для top.fxml я создал этот класс контроллера:
public class ControllerTop {
@FXML public Button topbtn;
@FXML public Button bottombtn;
@FXML
public void printOutput() {
System.out.println("Hello from top button");
topbtn.setDisable(true); //OK!
bottombtn.setDisable(false); //Failed
}
}
Конечно, botombtn определен в bottom.fxml и имеетсобственный контроллер.Проблема в том, что botombtn printOut () этого ControllerTop приводит к исключению NullPointerException.Поэтому мне нужна помощь, получая доступ к объектам хорошим и умным способом.
Спасибо