Wie erhalte ich Zugriff auf ein UI-element aus einem anderen controller-Klassen in JavaFX?

Ich habe eine JavaFX - /Java-8-Anwendung geschrieben, mit NetBeans 8 (keine SceneBuilder).

Meine Anwendung verfügt über ein Hauptfenster, das seine eigenen FXML-Datei (primären.fxml) und einen eigenen controller-Klasse (FXMLPrimaryController.java). Eines der Elemente in der FXML ist eine TextArea. Einige der Methoden, die in FXMLPrimaryController.java sind über das Anhängen, dass TextArea.

Diese Anwendung erscheint nun ein weiteres Fenster (eine weitere "stage") mit seiner eigenen FXML (Sekunde.fxml) und einen eigenen controller-Klasse (FXMLsecondController.java).

Innerhalb des zweiten controller-Klasse, wie kann ich eine TextArea in der Grundschule?

Hier ist ein Beispiel der relevante code:

primären.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();
    }

}

Es ist nichts besonderes über die zweite.fxml. Angenommen, es gibt einen button mit onAction="#writeSomething".

In FXMLsecondController.java ich möchte eine Funktion, die auf die oben TextArea.

InformationsquelleAutor adeena | 2014-02-24
Schreibe einen Kommentar