猿问

按下 cmd + Q 时确认程序退出

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


    public void windowClosing(WindowEvent e) {

        if (condition) {

            System.exit(0);

        }

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


倚天杖
浏览 135回答 2
2回答

侃侃尔雅

但是,当我按 cmd + Q 时,我相信这是您从命令行输入的按键?如果是这样,您也许可以使用addShutDownHook(...)在Runtime类中找到的方法。

温温酱

您需要更改 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);这样所有关闭操作都将使用您的条件。
随时随地看视频慕课网APP

相关分类

Java
我要回答