2013-07-23 167 views
0

這是我正在嘗試完成的。JAVAFX - FXML - 從父控制器訪問加載的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,但它並沒有被實例:(

我怎麼能這樣做?任何技巧或竅門圍繞它?

回答

2

我設法解決的問題請執行以下操作...並確保.fxml文件沒有設置fx:controller,否則您將遇到「Controller value already specified」。

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