【问题标题】:JavaFX Stage close event handlerJavaFX Stage 关闭事件处理程序
【发布时间】: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

不同的是,他想在整个应用程序关闭时调用一个处理程序,因此可以覆盖Applicationstop()方法。但是我没有关闭整个应用程序,只是一个阶段。并且Stage 没有要覆盖的stop() 方法。

感谢您的帮助。

【问题讨论】:

  • 如果您不想阻止舞台关闭,可以使用setOnHiding
  • @VGR 谢谢。所以一个 Stage 也被隐藏了,因为它是关闭的?而且,每次隐藏或最小化窗口时也会调用此事件吗?
  • 来自Stage documentation:“如果您需要阻止调用者直到模态阶段被隐藏(关闭),请使用 showAndWait() 方法。”对于 JavaFX Stages 和 Windows,“隐藏”和“关闭”是同义词。
  • @VGR 太好了,谢谢!

标签: java events javafx


【解决方案1】:

感谢 VGR 的 cmets,我正在寻找的解决方案非常简单,只需将 setOnCloseRequest 替换为 setOnHiding

myStage.setOnHiding( event -> {System.out.println("Closing Stage");} );

【讨论】:

    猜你喜欢
    • 2012-11-25
    • 2014-12-24
    • 1970-01-01
    • 2021-11-18
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多