близкое событие окна в Java

Я добавил слушателя статуса окна следующим образом:

this.addWindowStateListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            ExitAction.getInstance().actionPerformed(null);
        }

    });

Но когда я использую X близких кнопок, событие не называют. Я думаю, что это - что-то, чтобы сделать с netbean jdesktop платформу. Но я не могу найти то, что могло быть проблемой.Спасибо за помощь.

6
задан Guy 31 December 2009 в 06:19
поделиться

6 ответов

windowClosing является частью интерфейса WindowListener. Используйте addWindowListener вместо addWindowStateListener.

11
ответ дан 8 December 2019 в 14:43
поделиться

Как отмечали другие, WindowListener - это то, что вам нужно... но отныне вы должны делать это, когда переопределяете метод:

this.addWindowStateListener(
    new WindowAdapter() 
    {
        @Overrides
        public void windowClosing(WindowEvent e) 
        {
            ExitAction.getInstance().actionPerformed(null);
        }

    });

Тогда компилятор скажет вам, когда вы на самом деле не переопределяете метод, а вместо этого добавляете новый метод (который в данном случае никогда не будет вызван).

.
-2
ответ дан 8 December 2019 в 14:43
поделиться

Обычно для этого используется WindowListener.

Проверьте Закрытие приложения для подхода, который я использую, хотя я должен признать, что никогда не пробовал его с Netbeans, так как я не использую IDE.

3
ответ дан 8 December 2019 в 14:43
поделиться

Спасибо всем, что помогли мне решить проблему. Я не полностью его недооцениваю, но следующий код решает проблему:

    Frame[] frames = Frame.getFrames();
    for(Frame f: frames){
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                ExitAction.getInstance().actionPerformed(null);
            }

        });
    }

Это выглядит так, как будто фреймворк добавляет дополнительные фреймы. Спасибо,

0
ответ дан 8 December 2019 в 14:43
поделиться

Как сказано в документации Java, для фактического закрытия окна слушатель должен вызвать метод dispose окна или setVisible(false).

0
ответ дан 8 December 2019 в 14:43
поделиться

Не отвечая на ваш вопрос напрямую (поскольку ответ уже был дан), но я предполагаю, что вы хотите бросить вашу программу (или просто скрыть окно) на выходе. Для этих ситуаций есть более короткое решение:

window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
3
ответ дан 8 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: