JFrame.dispose()vs System.exit()

这两个方法有什么区别 – System.exit()JFrame.dispose()

如果我们想要在单击button时closuresJava Swing应用程序,应该使用哪种方法?

System.exit(); 导致Java VM完全终止。

JFrame.dispose(); 导致JFrame窗口被操作系统销毁和清理。 根据文档 ,这可能会导致Java虚拟机终止,如果没有其他Windows可用,但这应该只是被视为副作用,而不是规范。

你select的那个真的取决于你的情况。 如果您想要终止当前Java VM中的所有内容,则应该使用System.exit()并且将清理所有内容。 如果你只想销毁当前的窗口,如果这是唯一的窗口,副作用将closuresJava VM,那么使用JFrame.dispose()

JFrame.dispose()

 public void dispose() 

释放此窗口,其子组件及其所有子项使用的所有本机屏幕资源。 也就是说,这些组件的资源将被销毁,它们消耗的所有内存将被返回到操作系统,并被标记为不可显示。 窗口及其子组件可以通过重build本地资源并随后调用打包或显示来再次显示。 重新创build的窗口及其子组件的状态将与窗口处的这些对象的状态相同(不考虑这些操作之间的额外修改)。

注意:当Java虚拟机(VM)内的最后一个可显示窗口被丢弃时,VM可能会终止。 有关更多信息,请参阅AWT线程问题。

System.exit()的

 public static void exit(int status) 

终止当前运行的Java虚拟机。 这个论点是一个状态码。 按照惯例,非零状态码表示exception终止。 此方法在类Runtime中调用exit方法。 此方法从不正常返回。

呼叫System.exit(n)实际上等同于呼叫:

 Runtime.getRuntime().exit(n) 

除了上面的内容,你可以使用System.exit()来返回一个退出代码,如果你使用System.exit(code);自动调用这个进程,这个退出代码可能会非常有用System.exit(code); 这可以帮助您确定是否在运行过程中发生了错误。

  • 如果您打开了多个窗口,只想closures已closures的窗口,请使用JFrame.dispose().

  • 如果要closures所有窗口并终止应用程序,请使用System.exit()