Javafx java.lang.IllegalArgumentException:AnchorPane[id=klantroot,styleClass=root]已设置为另一个场景的根
我正在尝试使用JavaFX构建一个简单的应用程序。问题是当我第一次打开一个窗口(模态)时,它运行良好。第二次它给了我这个例外: java.lang.IllegalArgumentException:AnchorPane[id=klantroot, styleClass=root]已设置为另一场景的根 因为我对这个很陌生,所以我真的不知道如何解决这个问题。有人能帮忙吗。先谢谢你 在我的主控制器中,我有以下代码:Javafx java.lang.IllegalArgumentException:AnchorPane[id=klantroot,styleClass=root]已设置为另一个场景的根,javafx,modal-dialog,window,Javafx,Modal Dialog,Window,我正在尝试使用JavaFX构建一个简单的应用程序。问题是当我第一次打开一个窗口(模态)时,它运行良好。第二次它给了我这个例外: java.lang.IllegalArgumentException:AnchorPane[id=klantroot, styleClass=root]已设置为另一场景的根 因为我对这个很陌生,所以我真的不知道如何解决这个问题。有人能帮忙吗。先谢谢你 在我的主控制器中,我有以下代码: private void showModal(Parent view, String
private void showModal(Parent view, String title) {
Stage stage = new Stage();
Scene scene = new Scene(view);
stage.setScene(scene);
stage.initModality(Modality.WINDOW_MODAL);
stage.initOwner(this.root.getScene().getWindow());
stage.setTitle(title);
stage.showAndWait();
}
@FXML
private void handleToevoegenKlant() {
klantPresenter.setKlant(-1);
showModal(klantPresenter.getView(), "Toevoegen klant");
}
在我的三K党演讲者中,我有:
@FXML private Parent klantroot;
.....
public Parent getView() {
return klantroot;
}
@FXML
private void close() {
Stage stage = (Stage)getView().getScene().getWindow();
stage.close();
}
KlantView.fxml的代码以以下开头:
<AnchorPane
fx:id="klantroot"
fx:controller="presenter.KlantPresenter"
prefHeight="274.0" prefWidth="483.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
每个
场景
只能有一个根元素,每个父节点
节点只能设置为一个场景的根元素。若要将父对象设置为另一场景的根对象,需要断开以前的关系
代码场景场景=新场景(视图)showmodel(…)
方法中的code>将视图指定为场景的根。因此,当使用父视图的相同实例再次调用showmodel(…)
时,将出现错误
解决方案可能因应用程序逻辑而异:
1) 创建父视图的新实例并将其作为参数发送
2) 将行添加到showmodel(…)
打破旧关系
3) 您自己的解决方案?我也遇到了类似的问题,但当我尝试设置根时,我发现scene'e root不能为null。
if(view.getScene() != null)
view.getScene().setRoot(null);