JavaFX 8 有没有办法从节点获取 FXML 引用?
JavaFX 8 is there way to get the FXML reference from a Node?
我想知道是否有办法为给定节点获取对 FXML 的引用。
例如,我正在动态加载视图 - 假设我在当前控制器中引用了一个窗格:
private void openView() {
FXMLLoader loader = new FXMLLoader();
Parent node = loader.load(this.getClass().getResource("MyView.fxml").openStream());
pane.getChildren().add(node);
node.requestFocus();
}
我想保存打开的视图,以便下次打开 window 时重新启动它们。像这样:
private void saveOpenViews() {
pane.getChildren().forEach(child -> {
String fxmlLocation = child.getFXML();
etc....
}
}
我似乎无法找到一种方法来恢复它以保留打开的内容...希望有一种方法,而不是在另一个地方手动跟踪。
谢谢。
当你从fxml加载节点时,将相关的fxml信息存储在节点userData中,然后当你需要知道该节点与什么fxml相关时查找用户数据。
private void openView() {
FXMLLoader loader = new FXMLLoader();
URL fxmlLocation = this.getClass().getResource("MyView.fxml");
Parent node = loader.load(fxmlLocation.openStream());
node.setUserData(fxmlLocation);
pane.getChildren().add(node);
node.requestFocus();
}
private void saveOpenViews() {
pane.getChildren().forEach(child -> {
URL fxmlLocation = (URL) child.getUserData();
etc....
}
}
我想知道是否有办法为给定节点获取对 FXML 的引用。
例如,我正在动态加载视图 - 假设我在当前控制器中引用了一个窗格:
private void openView() {
FXMLLoader loader = new FXMLLoader();
Parent node = loader.load(this.getClass().getResource("MyView.fxml").openStream());
pane.getChildren().add(node);
node.requestFocus();
}
我想保存打开的视图,以便下次打开 window 时重新启动它们。像这样:
private void saveOpenViews() {
pane.getChildren().forEach(child -> {
String fxmlLocation = child.getFXML();
etc....
}
}
我似乎无法找到一种方法来恢复它以保留打开的内容...希望有一种方法,而不是在另一个地方手动跟踪。
谢谢。
当你从fxml加载节点时,将相关的fxml信息存储在节点userData中,然后当你需要知道该节点与什么fxml相关时查找用户数据。
private void openView() {
FXMLLoader loader = new FXMLLoader();
URL fxmlLocation = this.getClass().getResource("MyView.fxml");
Parent node = loader.load(fxmlLocation.openStream());
node.setUserData(fxmlLocation);
pane.getChildren().add(node);
node.requestFocus();
}
private void saveOpenViews() {
pane.getChildren().forEach(child -> {
URL fxmlLocation = (URL) child.getUserData();
etc....
}
}