java - 在 Netbeans 中自定义 windowClosing 事件后,我的 Java 程序无法结束

标签 java swing user-interface

在 Netbeans 中,自定义 windowClosingEvent 后我的程序不会退出。

我将数据库连接关闭指令添加到 windowClosingEvent 方法中,以确保如果用户关闭窗口而不是单击断开数据库按钮,可以断开我的数据库连接。

然后我手动添加“system.exit(0);”在 Netbeans 生成的 openingEvent 方法中。现在我的程序可以完成了。但我不明白为什么如果我添加 windowClosing 事件而不显式关闭程序,它无法自行完成。

最佳答案

如果您使用 WindowListener 接口(interface)或 WindowAdapter 并且您在其 windowClosing(e) 方法中查看原始实现,您将意识到他们没有为实现做任何事情:

//Invoked when a window is in the process of being closed. The close     
//operation can be overridden at this point. 

public void windowClosing(WindowEvent e) {}

因此,当您使用它时,您必须明确告诉他们关闭窗口时要做什么。如果不覆盖它,什么也不会发生。如果除了在关闭窗口时终止程序之外没有任何特殊要做的事情,通常我们会在重写的 windowClosing() 方法中编写 System.exit(0); .

示例:

frame.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }
});

对于您的情况,您可能需要检查数据库连接是否已关闭,而不仅仅是编写 System.exit(0):

@Override
public void windowClosing(WindowEvent e) {
    //Check if database connection is closed
    //Close DB connection if open
    System.exit(0);
}

关于java - 在 Netbeans 中自定义 windowClosing 事件后,我的 Java 程序无法结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36098456/

相关文章:

java - Spigot 服务器未写入配置文件

发现第一个错误后停止编译的 javac 命令行选项

java - 通过遍历枚举来分配参数

java - 用图像替换 JTextField?

java - 无法绘制透明组件背景

qt - 使用 PyQt 连接 QTableView selectionChanged 信号会产生段错误

ios - 如何使单元格不与其他单元格一起滚动?

java - 使用 Jboss 服务器阻止 JSF 应用程序下载 JS 文件

java - 如何调整 JLabel ImageIcon 的大小?

java - 自定义光标图标加载了一个额外的阴影像素