Как передать объект, созданный в FXML Controller1, в Controller2 внутреннего элемента управления FXML

У меня есть приложение JavaFX 2.0, которое состоит из двух файлов FXML и 2 контроллеров для них + один "основной" .java файл.

Во время запуска FXML1 инициализируется следующим образом:

public void start(Stage stage) throws Exception {
    stage.setTitle("Demo Jabber JavaFX Chat");

    Parent root = FXMLLoader.load(getClass().getResource("fxml_example.fxml"),
        ResourceBundle.getBundle("fxmlexample.fxml_example"));        
    Scene scene = new Scene(root, 226, 264);
    stage.setScene(scene);
    scene.getStylesheets().add("fxmlexample/fxmlstylesheet.css");
    stage.show();
}

Затем, когда нажимается кнопка из сцены1, в ее обработчике событий в классе Controller1 я изменяю корень сцены1, чтобы показать пользователю новое графическое представление . И в этом контроллере я инициализирую какой-то объект. Например, так:

public class FXMLExampleController {
   //some fields...
   private MySuperObject c;
   @FXML protected void handleSubmitButtonAction(ActionEvent event) {
    //some fields...
    c = new MySuperObject(); //here i initialize my object, i'm interested in
    try {
        c.login(username, password); // some actions with this object, which i need to make.
        Scene cc = buttonStatusText.getScene();
        Parent root = null;
        try {
            //changing a scene content...
            root = FXMLLoader.load(getClass().getResource("fxml_example2.fxml"),
            ResourceBundle.getBundle("fxmlexample.fxml_example"));
        } catch (IOException ex) {
            Logger.getLogger(FXMLExampleController.class.getName()).log(Level.SEVERE, null, ex);
        }
        cc.setRoot(root);
      }

И, после этого, я должен проделать некоторую работу с этим объектом на следующей сцене, и это должен быть НЕ новый экземпляр того же класса, а объект, который я инициализировал на следующей сцене. первая сцена.

Я понимаю, как сделать все это, используя "стандартную Java", но я немного запутался в этой задаче, используя JavaFX + FXML.

14
задан Agafonova Victoria 13 November 2015 в 08:32
поделиться