概述
当用户试图退出程序时,程序能够有机会进行确认和清理的工作。因此,正确的程序退出过程应该包含一些步骤
- 增加Button或菜单,让用户发布希望退出程序的信号。
- (可选)显示窗口,确认用户真的希望退出程序。
- 执行必要的清理工作,如:关闭文件和其他资源。
- 执行primary stage的
close
方法,关闭应用程序。
虽然我们做了上述工作,但用户依然可以通过直接点击窗口右上角X的方式绕过我们精心设计的代码,直接关闭程序。幸运的是,JavaFX提供了机会让我们阻止这样的事发生。
当用户试图关闭窗口时,JavaFX会产生一个CloseRequest
事件,并发送给窗口对应的舞台。我们可以调用Stage
类的setOnCloseRequest
方法,为这个事件提供一个事件处理器。当用户关闭窗口的时候,这个事件管理器就会被调用。
直接的方法就是让我们的Close按钮和CloseRequest
事件共享相同的事件处理器
btnClose.setOnAction(e -> btnClose_Click())
primaryStage.setOnCloseRequest(e -> btnClose_Click())
如果事件处理器中包含确认步骤,确认的结果可能是用户放弃关闭程序。但是,对于CloseRequest
事件,程序依然会被关闭。这是因为事件处理器如果没有调用close
方法关闭stage,那么CloseRequest
事件会按照预定的顺序继续传播到该事件的下一个处理器,因此程序还是会被关闭。为了阻止事件的传播,我们调用事件的consume
方法,这样就避免了JavaFX在事件处理后自动关闭stage。
处理两种关闭事件差异的简单方法是,总是消费掉CloseRequest
事件
btnClose.setOnAction(e -> btnClose_Click())
primaryStage.setOnCloseRequest(
e -> {
e.consume()
btnClose_Click()})
最后
以上就是自由煎蛋为你收集整理的JavaFX程序关闭的正确方式的全部内容,希望文章能够帮你解决JavaFX程序关闭的正确方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复