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()