这是最常见的情况吗?

时间:2010-05-12 10:33:53

标签: java swing

为什么当我单击x按钮关闭Java应用程序中的窗口时,只有窗口消失并且应用程序仍在运行。

我已经阅读了很多次,java设计师试图满足程序员最常见的需求,并节省宝贵的时间等等。当我点击X按钮时,比关闭应用程序更常见的情况是什么?

3 个答案:

答案 0 :(得分:8)

无论原因是什么,只要您了解它的工作原理以及如何使您的程序按照您想要的方式运行,它就无关紧要。

虽然猜测:一个应用程序可以有多个窗口,当其中一个关闭时退出应用程序听起来不太聪明。跟踪有多少窗口打开/关闭/隐藏/尚未显示,以及在最后一个窗口关闭时能够退出的可能是太多工作/太多边缘情况等等。因此,这取决于我们,程序员,当我们希望我们的应用程序退出。

在任何情况下,如果您希望您的应用在窗口(JFrame)关闭时退出,您可以告诉它这样做:

myJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

答案 1 :(得分:7)

许多应用程序一次打开多个窗口,关闭单个窗口绝不应该关闭整个应用程序。

此外,大多数应用程序在退出时都希望做一些简单的System.exit(0);。他们可能想要让用户保存一些文件(或自动保存),他们可能想要清理一些临时文件或通知某些远程主机关闭它们或类似的东西。

实际上,关闭窗口的唯一效果是结束JVM的可能性很小。

答案 2 :(得分:0)

myJFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

几乎总是首选处理。如果您明确说出EXIT_ON_CLOSE并且您希望显示多个窗口,则需要修改代码以使用DISPOSE_ON_CLOSE。当然,没什么大不了的,似乎是一个更好的选择。

在我看来,DISPOSE_ON_CLOSE应该是默认值,而不是HIDE_ON_CLOSE。哦,那就是我们得到的。应该避免使用EXIT_ON_CLOSE,原因与在窗口监听器中应该避免调用System.exit(0)的原因相同(尽管它本身没有任何问题,但它的灵活性不是很高)。

更好的是,几乎总是首选将WindowListener附加到您的框架并将默认设置设置为接近JFrame.DO_NOTHING_ON_CLOSE。这样,您可以控制应用程序何时关闭,包括提示用户保存任何工作等等。