Wie greife ich von einer anderen Controller-Klasse in JavaFX auf ein UI-Element zu?
Ich habe eine JavaFX / Java 8-Anwendung, die mit NetBeans 8 (NrSceneBuilder
).
Meine Anwendung verfügt über ein Hauptfenster mit einer eigenen FXML-Datei (primary.fxml) und einer eigenen Controller-Klasse (FXMLPrimaryController.java). Eines der Elemente in der FXML ist aTextArea
. Einige der Methoden in FXMLPrimaryController.java sollen daran angehängt werdenTextArea
.
Diese Anwendung erzeugt jetzt ein zweites Fenster (eine weitere "Stufe") mit einer eigenen FXML (second.fxml) und einer eigenen Controller-Klasse (FXMLsecondController.java).
Wie kann ich innerhalb der zweiten Controller-Klasse auf die TextArea in der primären zugreifen?
Hier ist ein Beispiel des relevanten Codes:
primary.fxml:
<Button text="press me!" onAction="#openSecondWindow" />
<TextArea fx:id="myArea" />
FXMLPrimaryController.java:
public class FXMLPrimaryController implements Initializable {
@Override
public void initialize(URL url, ResourceBundle rb) {
}
@FXML private TextArea myArea;
final public void writeToTextArea() {
myArea.appendText("hi!");
}
@FXML
private void openSecondWindow(ActionEvent event) throws Exception {
Group root = new Group();
Stage stage = new Stage();
AnchorPane frame = FXMLLoader.load(getClass().getResource("second.fxml"));
root.getChildren().add(frame);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
}
An second.fxml ist nichts Besonderes. Angenommen, es gibt eine Schaltfläche mitonAction="#writeSomething"
.
In FXMLsecondController.java möchte ich eine Funktion, die auf die oben genannten verweistTextArea
.