首页 文章

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

提问于
浏览
27

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

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

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

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

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

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

3 回答

  • 44

    您链接的文档指出 stage.close()

    关闭这个阶段 . 此调用等同于hide() .

    由于 hide() 相当于 close() 并且 close() 关闭了舞台,因此 hide() 也会关闭舞台 .

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

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

  • 1

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

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

    对于也有兴趣收听关闭窗口事件的用户,请向窗口添加一个事件过滤器:(当用户按下应用程序的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));
    

相关问题