你好,我有一个加载这样一个阶段的程序:
FXMLLoader loader = new FXMLLoader();
loader.setLocation(MainApp.class.getResource(ConstantsUI.CHEMIN_VIEW+
ConstantsUI.ECRAN_CAISSE_FERMEE));
AnchorPane ecran = (AnchorPane) loader.load();
// Show the scene containing the root layout.
Scene scene = new Scene(ecran);
MainApp.getInstance().getPrimaryStage().setScene(scene);
genericController = loader.getController();
genericController.setStage(MainApp.getInstance().getPrimaryStage());
// on garde la fenêtre en premier plan
MainApp.getInstance().getPrimaryStage().setMaximized(true);
MainApp.getInstance().getPrimaryStage().show();
MainApp.getInstance().getPrimaryStage().showAndWait();
System.out.println("toto");
我有一个带有此代码的按钮:
@FXML
public void clickButton() {
System.out.println("------here-----");
stage.close();
}
我的问题是,在我点击我的按钮后,消息" toto"不可见。为什么?
感谢。
答案 0 :(得分:1)
初级阶段不允许调用showAndWait
。
<强>抛出:强>
[...]
IllegalStateException
- 如果在主要阶段调用此方法。
您可以改为使用onHidden
事件处理程序:
MainApp.getInstance().getPrimaryStage().setOnHidden(evt -> {
System.out.println("toto");
});
MainApp.getInstance().getPrimaryStage().show();
或者,如果您想在应用程序的最后一个窗口关闭后运行代码(asumming您没有使用Platform.setExplicitExit(false)
),则可以覆盖Application.stop()
:
@Override
public void stop() throws Exception {
System.out.println("toto");
}