按下cmd + Q确认程序退出

时间:2018-10-06 22:33:48

标签: java swing jframe windowlistener system.exit

我有一个带有JFrame的程序,我使用WindowListener关闭该程序。我使用以下方法来提示有关保存程序中所做更改的消息:

    public void windowClosing(WindowEvent e) {
        if (condition) {
            System.exit(0);
        }

但是,当我按cmd + Q时,我的程序将退出,而无需选择保存。是否有一种聪明的方法来确保我可以在关闭程序之前具备条件,而不管我是通过窗口X还是通过键盘快捷键来关闭它?还是我需要为此创建一个KeyEvent?

2 个答案:

答案 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方法。