JavaFX 2.0:关闭一个阶段(窗口)

时间:2012-04-18 15:11:04

标签: javafx stage

我正在JavaFX 2.0中创建一个应用程序。在我的主窗口中,我正在启动一个带有一些设置的新窗口。调整完设置后,我想按下“保存更改”按钮。

我想要这个按钮来保存更改并关闭窗口。 关闭我的意思是杀死它,而不是将它放在后台或设置可见性。 我已经读过一个方法Stage.close()

  

http://docs.oracle.com/javafx/2.0/api/javafx/stage/Stage.html

正如您所看到的,它类似于方法Hide(),它只隐藏窗口,而不是关闭窗口。

问:有人知道任何方法或有一些代码可以帮助我关闭窗口吗?

非常感谢所有帮助。 谢谢!

3 个答案:

答案 0 :(得分:45)

您关联的文档指出stage.close()

  

关闭此阶段。此调用等同于hide()。

由于hide()相当于close()close()关闭了舞台,所以hide()也会关闭舞台。

如果应用程序中的所有阶段都被隐藏(或者如果您愿意,则关闭,因为它是相同的),应用程序将退出。令人困惑,我知道,但这就是JavaFX团队决定命名和实施行动的方式。

如果需要,可以使用Platform.setImplicitExit(boolean)方法关闭最后一个窗口关闭或隐藏时退出应用程序的默认行为。

答案 1 :(得分:18)

这对我来说非常合适(导入为Node):

((Node)(event.getSource())).getScene().getWindow().hide();

答案 2 :(得分:2)

对于也有兴趣听关闭窗口事件的用户,向窗口添加事件过滤器:(当用户按下应用程序的OS关闭按钮时,也会触发此事件)

    yourWindow.addEventFilter(WindowEvent.WINDOW_CLOSE_REQUEST, event -> {
        // add your code here to handle the close event
        // use event.consume(); to prevent the application from closing
    });

如果您需要使用自定义关闭按钮关闭应用程序,请在按钮的onAction方法中触发事件:

 yourWindow.fireEvent(new WindowEvent(window, WindowEvent.WINDOW_CLOSE_REQUEST));