0

我开始编写一个小程序来了解更多关于 java 的知识,并尝试在不总是使用 NetBeans 的情况下手动设计我的布局。

问题是,当我运行我的项目并关闭它时,它不会停止在 NetBeans 中运行,所以每次我重新运行它都会创建另一个运行。通过搜索和查看我使用 NetBeans 创建的另一个 GUI,我想添加

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

会做的伎俩,但我想我错了。

有人可以解释一下我应该怎么做吗?

这是我的程序的 SSCCE:http ://pastebin.com/QhKpwdDw

非常感谢您!

4

4 回答 4

1
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/WindowConstants.html#DISPOSE_ON_CLOSE

DISPOSE_ON_CLOSE

public static final int DISPOSE_ON_CLOSE dispose-window 默认的窗口关闭操作。注意:当 Java 虚拟机 (VM) 中的最后一个可显示窗口被处理掉时,VM 可能会终止。有关详细信息,请参阅 AWT 线程问题。

另请参阅:Window.dispose()、JInternalFrame.dispose()、常量字段值

于 2012-07-06T17:56:25.307 回答
1

试试这个...

将它放在 JFrame 的构造函数扩展 JFrame 的类中

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

于 2012-07-06T18:01:51.617 回答
1

您可能想看看这个问题:如何从代码中关闭 Java Swing 应用程序,因为它通常处理关闭应用程序以及如何确保它完全终止。

但要快速回答您的问题,有几种选择。


选项1

由于您JFrame在课堂上进行扩展,因此您可以使用EXIT_ON_CLOSE退出。

setDefaultCloseOperation(EXIT_ON_CLOSE);

注意: EXIT_ON_CLOSE退出所有JFrames应用程序,而不仅仅是应用程序。


选项 2

这很可能不是您想要的答案,但DISPOSE_ON_CLOSE只会关闭JFrame您正在应用它的答案。

如果您有多个JFramesopen ,或者如果您有任何其他Threads,它们将继续运行并且程序不会结束。但是如果你只有一个Thread和一个JFrame,这将关闭应用程序。

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);


我的偏好

我会选择选项 1,不同意其他人。它直接绑定到JFrame而不依赖于WindowConstants,这使事情变得更清洁和更可靠。但更重要的是,它会关闭所有窗口,而不仅仅是您应用它的窗口。

尽管看起来您只有一个窗口,但Threads您的程序中的其他地方可能还有其他内部,NetBeans 将其放入其中。

为确保一切都关闭,您要使用EXIT_ON_CLOSE.


额外的信息

有关如何DISPOSE_ON_CLOSEEXIT_ON_CLOSE不同的讨论:http: //www.coderanch.com/t/340183/GUI/java/DISPOSE-CLOSE-vs-EXIT-CLOSE

文档JFrame's EXIT_ON_CLOSEhttp ://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/JFrame.html#EXIT_ON_CLOSE

DISPOSE_ON_CLOSE关于和其他的文档:http WindowConstants: //docs.oracle.com/javase/1.5.0/docs/api/javax/swing/WindowConstants.html#DISPOSE_ON_CLOSE

于 2012-07-06T18:15:12.537 回答
0

正如您在此处看到的(setDefaultCloseOperation 文档),如果您想触发窗口侦听器(例如关闭数据库连接),可以使用 DISPOSE_ON_CLOSE。在这种情况下,选择 DISPOSE_ON_CLOSE 而不是 EXIT_ON_CLOSE 是有意义的。

PS:不要忘记System.exit(0)在窗口监听代码的末尾添加一个,以便应用程序退出。

于 2013-01-29T13:26:12.487 回答