我正在JavaFX 2.0中创建一个应用程序。在我的主窗口中,我正在启动一个带有一些设置的新窗口。调整完设置后,我想按下“保存更改”按钮。
我想要这个按钮来保存更改并关闭窗口。 关闭我的意思是杀死它,而不是将它放在后台或设置可见性。 我已经读过一个方法Stage.close()
http://docs.oracle.com/javafx/2.0/api/javafx/stage/Stage.html
正如您所看到的,它类似于方法Hide(),它只隐藏窗口,而不是关闭窗口。
问:有人知道任何方法或有一些代码可以帮助我关闭窗口吗?
非常感谢所有帮助。 谢谢!
答案 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));