I'm writing small application using JavaFX but I stuck with one problem.
I have fxml files:
MainPane.fxml
Stream.fxml
Play.fxml
and each of them has its own controller:
MainPaneController.java
StreamController.java
PlayController.java
Where in MainPane is:
<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 has this field:
<TextField fx:id="searchField" text="Search" onAction="#search"/>
now when action (enter button) if fired I want to access and change a label in Stream.fxml as follows:
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
}
}
I would like to avoid binding like
MainPaneController <-> StreamController
MainController <-> PlayController
and access fields like:
mainController.getStreamController.changeLabel(text)
because I hope there is some better way to do this.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…