添加鼠标侦听器后,进程不会关闭

时间:2010-07-06 00:30:32

标签: java swing listener

我想知道在向表单frameview添加侦听器时尝试关闭Java Swing应用程序时出现的问题。以下是如何产生我的问题:在Netbeans中,创建一个新的Swing应用程序项目,然后在主类中创建一个本地方法,通过this.getMainFrame()将一个空的鼠标监听器添加到主窗口.addMouseListener(new MouseAdapter() {})。进入表单类,并在表单的构造函数中使用.getApplication()。createListenerMethod()在InitComponents()之后调用该方法。

运行程序,你会看到关闭它之后,netbean的小进度条表示它仍在运行:(

我发现如果我将表单的默认关闭操作设置为“dispose”,它就可以解决问题。如果我从表单调用一个方法到主应用程序类来为自己添加一个监听器,为什么会这样做呢?我之所以这样添加它是因为我想将主应用程序逻辑保留在主文件类中,我感到不安在表单设计器解析类中编写代码。

1 个答案:

答案 0 :(得分:3)

我不认为鼠标监听器与你所看到的有任何关系,尽管NB代码生成向导可能在受保护区域中做了一些奇怪的事情。

Swing不会自动处理帧/窗口,以防您想重复使用它们(多次显示/隐藏)。通常,您希望跟踪关闭的窗口/从窗口侦听器处置它们,或者在更简单的情况下,使用JFrame.setDefaultCloseOperation()。大多数情况下,每个相当大的Swing应用程序都有某种全局状态跟踪工具,它可以在满足终止条件时处理所有窗口并关闭线程池。

如果您愿意花时间学习它,您也可以使用NetBeans RCP来处理GUI应用程序的许多方面(我不建议使用小型应用程序)。 Swing app框架的另一个替代方案是Jide Software的JDAF(我的首选)和“Better Swing Application Framework”(来自kenai.com)