如何在JavaFX中将对象传递给第二个窗口?

时间:2015-12-29 16:30:28

标签: java user-interface javafx controller fxml

我已经看过几次这个问题,但不幸的是我无法从给定的答案中解决我的问题。 This最适合我,很容易理解。

我有1个主要,2个控制器(主要,次要)和2个fxml(主要,次要)文件。这是我从主控制器打开第二个窗口的方法:

@FXML
private void handleButtonOpenSecondWindow(ActionEvent event) {

    try{
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("SecondWindow.fxml"));
        Parent root1 = (Parent) fxmlLoader.load();
        Stage stage = new Stage();
        stage.initModality(Modality.APPLICATION_MODAL); 
        stage.setTitle("Second Window");
        stage.setScene(new Scene(root1));  
        stage.show();
      }
    catch (Exception ex) {
        ex.printStackTrace();
    }
}

这很好用,上面我想要的是在上面的括号中的某处添加我的对象。

也许:

root1.setMyObjects(object1, object2);

我尝试将我的代码转换为我喜欢的答案,但是当我为辅助控制器创建构造函数时,Parent root1 = (Parent) fxmlLoader.load();行总是失败(但是当从主控制器调用时它可以工作)。我在辅助控制器中也有initialize();方法。我尝试使用构造函数,没有构造函数,将构造函数部分放入initialize();,但没有一个工作......如果你能伸出援手,我会很高兴。

1 个答案:

答案 0 :(得分:0)

您应该在第一个控制器中使用全局变量,并在第二个控制器中获取变量。