我有一个带有JFrame的程序,我使用WindowListener关闭该程序。我使用以下方法来提示有关保存程序中所做更改的消息:
public void windowClosing(WindowEvent e) {
if (condition) {
System.exit(0);
}
但是,当我按cmd + Q时,我的程序将退出,而无需选择保存。是否有一种聪明的方法来确保我可以在关闭程序之前具备条件,而不管我是通过窗口X还是通过键盘快捷键来关闭它?还是我需要为此创建一个KeyEvent?
答案 0 :(得分:0)
您需要在JFrame上更改DefaultCloseOperation,然后在windowClosing事件(或如上所示的System.exit(0))上处理框架。这是一个简单的工作示例:
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);
这样,所有关闭操作都将使用您的条件。
答案 1 :(得分:0)
但是,当我按cmd + Q时,
我相信这是您从命令行输入的击键吗?
如果是这样,您也许可以使用addShutDownHook(...)
类中的Runtime
方法。