2
我想弄清楚是否有辦法得到給定節點的FXML的引用。JavaFX 8有辦法從節點獲取FXML引用嗎?
比如我動態加載的觀點 - 認爲我在目前的控制器中引用的窗格:
private void openView() {
FXMLLoader loader = new FXMLLoader();
Parent node = loader.load(this.getClass().getResource("MyView.fxml").openStream());
pane.getChildren().add(node);
node.requestFocus();
}
我想保存這觀點是開放的,這樣我可以重新啓動他們下一次的窗口打開。事情是這樣的:
private void saveOpenViews() {
pane.getChildren().forEach(child -> {
String fxmlLocation = child.getFXML();
etc....
}
}
我似乎無法找到一個辦法讓回到堅持什麼是開放的......希望有一種方式,比在別的地方手動跟蹤等。
謝謝。
當使用FXML時,您通常會擁有一個控制器類。創建一個包含所需getter和setter方法的抽象控制器類。你所有的控制器都會擴展這個類。然後,您可以使用fxmlLoader.getController()訪問控制器,並調用FXML位置的setter。您可以將打開的視圖的控制器存儲在List中。一旦保存方法被調用,你只需要迭代你的控制器並獲取xml。如果您想要更靈活地定義視圖控制器,您可以使用DataFX(http://www.guigarage.com/2014/05/datafx-8-0-tutorials/) –
感謝您提供Hendrik信息。可能最好提供答案而不是評論。 – jewelsea