我正在使用JavaFX。
当某个文件没有加载时,我希望关闭该阶段并停止执行该实例中的代码。
catch (FileNotFoundException ex)
{
stage.close();
System.out.println("This should not appear.");
}
调用stage.close()会关闭程序,但在此之前,程序中的其他一些代码会被执行。我不希望这种情况发生。
如何立即关闭当前阶段(或至少阻止其他代码执行)?
答案 0 :(得分:0)
使用stage.setOnCloseRequest
在舞台关闭前执行操作。像
public void start(Stage primaryStage)
{
// do all the regular stuff.
primaryStage.setOnCloseRequest(E -> {
// perform actions before closing
});
}
覆盖Application类中的stop()
方法也是添加关闭钩子的有效方法。虽然从实验开始,但是当应用程序关闭时,它并不总是被调用。
最后,如果要关闭整个应用程序,请使用Platform.exit()
(静态方法)。 stage.close()
方法等于stage.hide()
,意味着只隐藏窗口,应用程序不会关闭。
EDIT1:
如果要在阶段隐藏时执行代码。使用以下snippit。
primaryStage.setOnHiding(E -> {
// perform actions upon hiding.
});
EDIT2:
如果您希望第一个舞台等待第二个舞台,并在第二个舞台关闭后继续使用secondaryStage.showAndWait()
。这样,如果要在第一个舞台上继续执行,只需关闭辅助舞台。