2

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

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

但是,当我按 cmd + Q 时,我的程序将退出而我无法选择保存。无论我是通过窗口 X 还是通过键盘短命令关闭程序,是否有一种聪明的方法可以确保在关闭程序之前有条件?或者我需要为此创建一个 KeyEvent 吗?

4

2 回答 2

0

但是,当我按 cmd + Q 时,

我相信这是您从命令行输入的击键?

如果是这样,您也许可以使用类addShutDownHook(...)中的方法Runtime

于 2018-10-06T23:07:20.983 回答
0

您需要更改 JFrame 上的 DefaultCloseOperation,然后在 windowClosing 事件(或 System.exit(0) 上显示的 windowClosing 事件)上 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);

这样所有关闭操作都将使用您的条件。

于 2018-10-06T22:55:58.450 回答