java - 按下按钮时,JDialog 不会触发关闭或关闭事件
问题描述
单击 JDialog 的窗口框架上的“X”按钮时
- 关闭事件被触发,并且
- 应用程序退出。
单击“确定”按钮时
- 窗口消失,
- 没有关闭事件被触发,并且
- 应用程序不退出。
为什么?以及如何让两者表现相同;我希望他们俩都举行闭幕式。我不想创建自定义按钮。我希望当前操作系统的默认外观和感觉来指示按钮文本和样式,以便与正在运行的操作系统保持一致。
我在 macOS、Windows、Java 11 和 Java 13 上观察到了这种行为。所以我猜这是故意的……但它确实让我感到困惑。我认为任何setVisible(false)
会触发关闭事件。
这是我的SSCCE:
import javax.swing.*;
import java.awt.event.*;
public class JexitOnClose2 {
public static void main(String args[]) {
SwingUtilities.invokeLater(()-> {
final JOptionPane pane = new JOptionPane(
new JLabel("hello"), JOptionPane.ERROR_MESSAGE);
JDialog dialog = pane.createDialog(null, "title goes here");
dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
dialog.addWindowListener(
new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("window closing");
}
@Override
public void windowClosed(WindowEvent e) {
System.out.println("window closed");
}
}
);
dialog.setVisible(true);
});
}
}
解决方案
推荐阅读
- python - 将图像大小调整为 28x28 以使我的 Tensorflow 模型正常工作
- r - 以 dttm 格式更改时间序列 x 轴的范围
- php - 我的自动回复功能不起作用可能是什么问题?
- pyspark - pyspark 中的 log4j 自定义字段
- excel - 我需要在 SharePoint 上的 2 个工作簿之间建立连接
- amazon-web-services - 存储从 AWS SES 发送的电子邮件
- vba - 如何在exel的选定列中查找特定单词
- sql - 用于计数记录的 SQL 查询,其中 count = 1 且 Value <50
- android - 如何检查用户是否为我的应用阻止了互联网?
- javascript - Vite / Vue 3 : "require is not defined" when using image source as props