【发布时间】:2023-04-01 06:48:01
【问题描述】:
我在 JavaFX 中有一个 Stage,可以通过多种方式关闭,通过单击红色 (X) 或通过调用 stage.close() 的按钮
不管舞台是如何关闭的,我都想在它关闭之前(或之后)执行一个动作。
如果我使用以下代码:
myStage.setOnCloseRequest( event -> {System.out.println("Closing Stage");} );
然后当我单击 (X) 时调用处理程序,但在调用 myStage.close() 时不会调用
这与此问题所讨论的问题相同(有一个关键区别): JavaFX: Stage close handler
不同的是,他想在整个应用程序关闭时调用一个处理程序,因此可以覆盖Application的stop()方法。但是我没有关闭整个应用程序,只是一个阶段。并且Stage 没有要覆盖的stop() 方法。
感谢您的帮助。
【问题讨论】:
-
如果您不想阻止舞台关闭,可以使用setOnHiding。
-
@VGR 谢谢。所以一个 Stage 也被隐藏了,因为它是关闭的?而且,每次隐藏或最小化窗口时也会调用此事件吗?
-
来自Stage documentation:“如果您需要阻止调用者直到模态阶段被隐藏(关闭),请使用 showAndWait() 方法。”对于 JavaFX Stages 和 Windows,“隐藏”和“关闭”是同义词。
-
@VGR 太好了,谢谢!