JAVAFX - FXML - 从父控制器访问加载的FXML控件

时间:2013-07-23 04:13:00

标签: java javafx fxml

这是我想要实现的目标。

/Package A/
/Package A/ApplicationController.java
/Package A/Application.fxml

在我的Application.fxml文件中,我有一个按钮,当单击该按钮时,它会加载以下“MyGrid.fxml”文件。

/Package B/
/Package B/MyGrid.fxml (has a label #mygridlabelid

我使用的代码是:

ContentPane.getChildren().add((Node)FXMLLoader.load(getClass().getResource("/Package B/MyGrid.fxml")));

但问题是..即使我从ApplicationController加载MyGrid.fxml文件,我也无法从ApplicationController文件访问#mygridlabelid。我在ApplicationController.java文件中定义了@FXML标签mygridlabelid,但它没有实例化:(

我该怎么做?围绕它的任何技巧或黑客?

1 个答案:

答案 0 :(得分:2)

我设法通过执行以下操作来解决问题...并确保.fxml文件没有fx:controller set。否则您将遇到“已指定控制器值。”

    FXMLLoader loader = new FXMLLoader(getClass().getResource("/your.fxml"));
    loader.setController(this);
    try {
        ContentPane.getChildren().add((Node)loader.load());
    } catch (IOException e){
        System.out.println(e.getMessage());
    }