JFrame.dispose()vs System.exit()

Adi*_*dil 31 java swing jvm jframe

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

如果我们想在单击按钮时关闭Java Swing应用程序,我应该使用哪种方法?

wat*_*ios 53

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

JFrame.dispose();导致JFrame窗口被操作系统破坏和清理.根据文档,如果没有其他Windows可用,这可能导致Java VM终止,但这应该被视为副作用而不是常态.

你选择的那个真的取决于你的情况.如果要终止当前Java VM中的所有内容,则应使用System.exit()并清除所有内容.如果您只想破坏当前窗口,如果这是唯一的窗口,则会产生关闭Java VM的副作用,然后使用JFrame.dispose().


Sri*_*ati 12

JFrame.dispose()

public void dispose()
Run Code Online (Sandbox Code Playgroud)

释放此Window,其子组件及其所有子组件使用的所有本机屏幕资源.也就是说,这些组件的资源将被销毁,它们使用的任何内存都将返回给操作系统,并且它们将被标记为不可显示.通过随后调用pack或show重建本机资源,可以再次显示Window及其子组件.重新创建的窗口及其子组件的状态将与窗口处置点处的这些对象的状态相同(不考虑这些操作之间的其他修改).

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

System.exit()的

public static void exit(int status)
Run Code Online (Sandbox Code Playgroud)

终止当前运行的Java虚拟机.该参数用作状态代码; 按照惯例,非零状态代码表示异常终止.此方法在类Runtime中调用exit方法.此方法永远不会正常返回.

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

Runtime.getRuntime().exit(n)
Run Code Online (Sandbox Code Playgroud)


Clo*_*ble 5

除了上述内容之外,您还可以使用它System.exit()来返回退出代码,如果您使用System.exit(code);此方法自动调用该进程可以帮助您确定运行期间是否发生错误,则可能会非常有用.


Noa*_*ron 5

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

  • 如果您想关闭所有窗口并终止应用程序,请使用System.exit()