Доступ к полям из другого контроллера в JavaFX
Я пишу небольшое приложение, используя JavaFX, но я застрял с одной проблемой.
У меня есть файлы fxml:
MainPane.fxml
Stream.fxml
Play.fxml
и у каждого из них есть свой контроллер:
MainPaneController.java
StreamController.java
PlayController.java
Где в MainPane находится:
<GridPane fx:controller="model.MainController" fx:id="mainGrid"
xmlns:fx="http://javafx.com/fxml" alignment="CENTER" gridLinesVisible="true">
<children>
<fx:include source="Stream.fxml"/>
</children>
<children>
<fx:include source="Play.fxml"/>
</children>
</GridPane>
Play.fxml имеет это поле:
<TextField fx:id="searchField" text="Search" onAction="#search"/>
теперь, когда действие (кнопка ввода), если запущено, я хочу получить доступ и изменить метку в Stream.fxml следующим образом:
public class PlayController implements Initializable {
@FXML
private TextField searchField;
@FXML
protected void search() {
System.out.println("Search");
String text = searchField.getText();
//how to access Label in StreamController
}
}
Я хотел бы избежать привязки, как
MainPaneController <-> StreamController
MainController <-> PlayController
и доступ к полям, как:
mainController.getStreamController.changeLabel(text)
потому что я надеюсь, что есть лучший способ сделать это.