2015-05-25 4 views
1

У меня возник вопрос о связи между прослушивателем качающегося окна и операцией закрытия по умолчанию. Возникает вопрос, когда я имею дело с ниже сценарием:Окно Закрыть слушатель и setDefaultCloseOperation

добавить окно слушателя (WindowAdapter используется для слушателя) для JFrame и переопределить функцию windowClosing: если пользователь закрывает окно, появится диалоговое окно для подтверждения, если пользователь выберет опцию CANCEL, а затем сразу верните. Однако, когда я проверяю код и выбираю CANCEL при закрытии окна, окно кадра все равно закрывается (или может быть просто невидимым, потому что значок Java все еще находится на панели задач).

Затем я добавляю параметр закрытия по умолчанию с DO_NOTHING_ON_CLOSE, с тем же тестовым поведением окно кадра не закрывается, что я и ожидал.

setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); 

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

Это меня смущает. Означает ли это, что слушатель окна может просто определить, что делать, когда окно закрывается, но не может определить, закрыть ли окно? Или мне нужно переопределить другую функцию?

+0

что я ожидал.setDefaultCloseOperation (DO_NOTHING_ON_CLOSE); ---> myFrame.setVisible (false) – mKorbel

ответ

1

Слушатель окон - это просто слушатель. Это не влияет на операцию закрытия по умолчанию, если вы фактически не измените операцию закрытия по умолчанию в коде windowClosing().

Я использую:

frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); 

по умолчанию при создании кадра. Затем в методе windowClosing(...), если пользователь подтверждает закрытие фрейма изменить значение по умолчанию:

frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 

ЗАКАНЧИВАТЬ Closing an Application для получения дополнительной информации и более полный пример кода.

+0

Спасибо за ваш ответ и статью. – xuanzhui

 Смежные вопросы

  • Нет связанных вопросов^_^