java - 添加鼠标监听器后进程不会关闭

标签 java swing listener

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

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

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

最佳答案

我认为鼠标监听器与您所看到的内容没有任何关系,尽管 NB 代码生成向导可能会在 protected 区域中执行一些奇怪的操作。

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

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

关于java - 添加鼠标监听器后进程不会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3182847/

相关文章:

java - 使用 AspectJ 调试企业 Java 应用程序

java - 基于 TableView 自动更改 TableModel?

java - 是否可以让单个文档监听器在 Swing 中监听多个文本字段

android - 正在调用 Textview onClick 而不是 Listview onItemClick。

android - onLongClick 触发 Linkify onClick

java - Zip4j 库 : How do I check if the zip file is empty?

java - 递归 Java 与 Python

java - AES - 在 Java 中用密文存储 IV

c# - winforms 面板与 java swing 面板

java - 在 JTable 中编辑事件后