当我使用JFrame创建一个简单的程序时,从setVisible方法为真的那一刻起,无论我对框架做什么,程序都不会退出。有人可以解释一下流程吗? 感谢
答案 0 :(得分:3)
当您调用myJFrame.setVisible(true)
时,您正在创建一个非守护程序Swing事件线程,该线程会阻止程序结束,直到此线程和所有非守护程序线程结束。注意,如果您希望程序在JFrame关闭时结束,请调用
myJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
答案 1 :(得分:3)
当JFrame打开时,我知道程序将继续更新JFrame,即使它是不可见的,也可以检查它是否再次可见,以及检查屏幕是否需要更新。如果要在JFrame关闭时关闭程序,可以使用:
JFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
它不会更新检查可见性的线程,它只是在JFrame停止可见时停止程序。
答案 2 :(得分:2)
也许你错过了frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
?
frame
无论您的框架名称是什么。
答案 3 :(得分:1)
来自setDefaultCloseOperation(int)
的文档。
您必须指定以下选项之一:
DO_NOTHING_ON_CLOSE
(在WindowConstants
中定义):不要做任何事情;要求程序在已注册的windowClosing
对象的WindowListener
方法中处理操作。HIDE_ON_CLOSE
(..):在调用任何已注册的WindowListener
对象后自动隐藏框架。DISPOSE_ON_CLOSE
(..):在调用任何已注册的WindowListener
对象后自动隐藏和处置框架。EXIT_ON_CLOSE
(..):使用System退出方法退出应用程序。仅在应用程序中使用它。
我选择高亮3号,因为它通常比上一个好。这有两个原因。
System.exit(n)
”终止虚拟机并不构成“正确”。