System.exit()和JFrame.dispose()这两种方法的区别是什么
如果我们想在单击按钮时关闭Java Swing应用程序,我应该使用哪种方法?
发布于 2012-11-13 20:08:48
System.exit();会导致Java完全终止。
JFrame.dispose();会导致JFrame窗口被操作系统销毁和清除。根据documentation的说法,如果没有其他窗口可用,这可能会导致Java终止,但这实际上应该被视为一种副作用,而不是规范。
你选择哪一个真的取决于你的情况。如果您想要终止当前Java中的所有内容,则应该使用System.exit(),所有内容都将被清除。如果您只想销毁当前窗口,其副作用是如果这是唯一的窗口,则会关闭Java,那么可以使用JFrame.dispose()。
发布于 2012-11-13 20:09:17
JFrame.dispose()
public void dispose()释放此窗口使用的所有本机屏幕资源、其子组件及其所有拥有的子项。也就是说,这些组件的资源将被销毁,它们消耗的任何内存都将返回给操作系统,并且它们将被标记为不可显示。通过使用后续的pack或show调用重新构建本机资源,可以使窗口及其子组件再次可显示。重新创建的窗口及其子组件的状态将与这些对象在窗口被放置时的状态相同(不考虑这些动作之间的附加修改)。
注意:当Java虚拟机( VM )中的最后一个可显示窗口被释放时,VM可能会终止。有关更多信息,请参见AWT线程问题。
System.exit()
public static void exit(int status)终止当前运行的Java虚拟机。该参数用作状态代码;按照惯例,非零状态代码表示异常终止。此方法调用类Runtime中的exit方法。此方法永远不会正常返回。
调用System.exit(n)实际上等同于调用:
Runtime.getRuntime().exit(n)发布于 2012-11-13 20:12:53
除此之外,您还可以使用System.exit()返回退出代码,这可能非常有用,特别是当您使用System.exit(code);自动调用进程时,这可以帮助您确定例如在运行期间是否发生了错误。
https://stackoverflow.com/questions/13360430
复制相似问题