Подтвердите выход из программы при нажатии cmd + Q - PullRequest
0 голосов
/ 07 октября 2018

У меня есть программа с JFrame, с которой я использую WindowListener, чтобы закрыть программу.Я использую следующий метод, чтобы получить сообщение о сохранении изменений, внесенных в программу:

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

Однако, когда я нажимаю cmd + Q, моя программа завершает работу без возможности сохранения.Есть ли умный способ убедиться, что у меня может быть условие, прежде чем я закрою свою программу, независимо от того, закрываю ли я ее через окно X или с помощью коротких команд клавиатуры?Или мне нужно создать KeyEvent для этого?

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Однако, когда я нажимаю cmd + Q,

Я полагаю, что это клавиша, которую вы вводите из командной строки?

Если это так, вы можетеиспользуйте метод addShutDownHook(...), найденный в классе Runtime.

0 голосов
/ 07 октября 2018

Вам нужно изменить DefaultCloseOperation на JFrame и затем удалить () фрейм для события 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);

Таким образом, все операции закрытия будут использовать ваше условие.

...