Comment puis-je accéder à un élément d'INTERFACE utilisateur à partir d'un autre contrôleur de classe JavaFX?

J'ai un JavaFX /Java 8 application écrite avec NetBeans 8 (pas de SceneBuilder).

Ma demande a une fenêtre principale qui dispose de son propre fichier FXML (primaire.fxml) et de son propre contrôleur de classe (FXMLPrimaryController.java). L'un des éléments dans le FXML est un TextArea. Les méthodes de l'FXMLPrimaryController.java sont sur l'ajout à qui TextArea.

Cette application génère désormais une deuxième fenêtre (une autre "scène"), avec son propre FXML (seconde.fxml) et de son propre contrôleur de classe (FXMLsecondController.java).

Dans le deuxième contrôleur de classe, comment puis-je accéder à la TextArea dans le primaire?

Voici un exemple de code:

primaire.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();
    }

}

Il n'y a rien de compliqué à propos de second.fxml. Supposons qu'il existe un bouton avec onAction="#writeSomething".

Dans FXMLsecondController.java je voudrais une fonction qui fait référence ci-dessus TextArea.

OriginalL'auteur adeena | 2014-02-24