JFrame.dispose() vs System.exit()
这两种方法之间有什么区别 - 和?System.exit()
JFrame.dispose()
如果我们想在单击按钮时关闭 Java Swing 应用程序,我应该使用哪种方法?
这两种方法之间有什么区别 - 和?System.exit()
JFrame.dispose()
如果我们想在单击按钮时关闭 Java Swing 应用程序,我应该使用哪种方法?
System.exit();
导致 Java VM 完全终止。
JFrame.dispose();
导致操作系统销毁并清理窗口。根据文档,如果没有其他可用的Windows,这可能会导致Java VM终止,但这实际上应该被视为副作用而不是常态。JFrame
你选择的那个实际上取决于你的情况。如果要终止当前 Java VM 中的所有内容,则应使用,并且所有内容都将被清理。如果只想销毁当前窗口,并且副作用是如果这是唯一的窗口,则关闭 Java VM,请使用 。System.exit()
JFrame.dispose()
JFrame.dispose()
public void dispose()
释放此窗口、其子组件及其所有拥有的子组件使用的所有本机屏幕资源。也就是说,这些组件的资源将被销毁,它们消耗的任何内存都将返回到操作系统,并且它们将被标记为不可显示。通过重新生成本机资源并随后调用打包或显示,可以使 Window 及其子组件再次可显示。重新创建的 Window 及其子组件的状态将与这些对象在释放 Window 时的状态相同(不考虑这些操作之间的其他修改)。
注意:当 Java 虚拟机 (VM) 中的最后一个可显示窗口被释放时,VM 可能会终止。有关详细信息,请参阅 AWT 线程问题。
System.exit()
public static void exit(int status)
终止当前正在运行的 Java 虚拟机。该参数用作状态代码;按照惯例,非零状态代码表示异常终止。此方法调用类运行时中的 exit 方法。此方法永远不会正常返回。
该调用实际上等效于调用:System.exit(n)
Runtime.getRuntime().exit(n)