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