Passer des objets d'une scène à l'autre

Que je suis en train d'apprendre le nouveau monde de JavaFX2 je suis tombé sur un autre problème gênant. Je suis l'élaboration d'un programme avec plusieurs scènes (~10 scènes). Pour cela, j'ai créé une petite classe comme ceci:

public class SceneSelector {
    ...
    public void setScene(Stage stage, String fxmlfilename, ObservableList ol) throws Exception{
        String s = "../" + fxmlfilename;
        Parent root = FXMLLoader.load(getClass().getResource(s));
        root.setUserData(ol);

        Scene scene = new Scene(root);
        stage.setScene(scene);

        //show the stage
        stage.show();
    }
}

Cette classe fonctionne assez bien pour la commutation entre les scènes.
Maintenant, le problème est que j'ai parfois besoin de passer des données à partir de Scene1 à Scene2. Je suis en train de le faire en mettant l' setUserData() pour la nouvelle scène qui fondamentalement fonctionne sauf une chose. Comment puis-je obtenir les données de l'utilisateur lors de la nouvelle Scène est en étant initialisé? (parce que les Noeuds sont toujours null à l'époque)

Code à scene1:

//Code connected to a button that opens the new Scene
private void openLabID(ActionEvent event) throws Exception {       
    final Stage primaryStage = (Stage) btnNewScene.getScene().getWindow();

    ObservableList<Koe> olAfTeWerkenKoeien = DA_Koe.getAfTeWerkenKoeien();
    ss.setScene(primaryStage, "GUI/scenes/koe/Koe.fxml", olAfTeWerkenKoeien);
}

Code à scene2:

public void initialize(URL url, ResourceBundle rb) {
    Scene s = lbl.getScene();
    ObservableList<Koe> olAfTeWerkenKoeien = (ObservableList<Koe>) s.getRoot().getUserData();
    System.out.println(olAfTeWerkenKoeien.size());
} 

Bien sûr la Scène s donne une valeur nulle à ce point (lbl est nul à ce point), alors je me demande, est-il une méthode qui est d'être congédié après initialiser?

Quand je donne ce code pour un bouton sur Scene2, il fonctionne comme un charme, mais elle doit être chargée automatiquement.

EDIT:
Le réglage des données avec le setMyData() la méthode n'est pas un problème, cependant la récupération c'est:

public ObservableList<Koe> getMyData() {
   return this.myData;
}

Comment puis-je obtenir le CustomScene objet lorsqu'un contrôleur initialise? Car cela ci-dessous entraînera une NullPointerException (parce que btnSluiten n'est pas initialisé pour l'instant):

@Override
public void initialize(URL url, ResourceBundle rb) {
    ...
    Stage stage = (Stage) btnSluiten.getScene().getWindow();
    CustomScene cs = (CustomScene) stage.getScene();

    ObservableList<Koe> olKoe = cs.getMyData();

    System.out.println(olKoe.size());
}

OriginalL'auteur Perneel | 2012-07-16