我有一个带有 JFrame 的程序,我使用 WindowListener 来关闭程序。我使用以下方法提示有关保存程序中所做更改的消息: public void windowClosing(WindowEvent e) { if (condition) { System.exit(0); }但是,当我按 cmd + Q 时,我的程序将退出而我无法选择保存。有没有一种聪明的方法来确保在关闭程序之前我可以有一个条件,无论我是通过窗口 X 还是通过我的键盘短命令关闭它?或者我需要为此创建一个 KeyEvent 吗?
2 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
但是,当我按 cmd + Q 时,
我相信这是您从命令行输入的按键?
如果是这样,您也许可以使用addShutDownHook(...)
在Runtime
类中找到的方法。
温温酱
TA贡献1752条经验 获得超4个赞
您需要更改 JFrame 上的 DefaultCloseOperation ,然后在 windowClosing 事件(或 System.exit(0) ,如上所示)上 dispose() 框架。这是一个简单的工作示例:
JFrame f = new JFrame();
f.setPreferredSize(new Dimension(300, 300));
f.pack();
f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent we) {
if (condition) {
f.dispose();
}
}
});
f.setVisible(true);
这样所有关闭操作都将使用您的条件。
添加回答
举报
0/150
提交
取消