Підтвердження закриття jframe, java swing і інша джава

Підтвердження закриття jframe, java swing і інша джава
Всім відомо, що у JFrame вікна є заголовок, на якому крім усього іншого є кнопка закриття вікна. Виникають ситуації, при яких необхідно показати користувачеві вікно з підтвердженням після натискання на кнопку закриття вікна. Давайте подивимося, як можна реалізувати такий функціонал. Перше, на що потрібно звернути увагу це метод setDefaultCloseOperation класу JFrame. За допомогою даного методу розробник говорить JFrame, який він створює, що необхідно зробити при закритті вікна. Дуже часто в цей метод передають константу JFrame.EXIT_ON_CLOSE. Якщо методу setDefaultCloseOperation передати цю константу, то при закритті вікна додаток буде припиняти роботу. Зараз нам знадобиться передавати сюди константу JFrame.DO_NOTHING_ON_CLOSE. Якщо передати цю константу, то при закритті вікна нічого відбуватися не буде. Власне це нам і треба, тому як закриття вікна і вихід з програми ми будемо здійснювати з коду. Щоб про те, що користувач натиснув кнопку закриття вікна необхідно повісити на JFrame слухача WindowListener і реалізувати у нього метод windowClosing. Тут ми покажемо користувачеві діалог підтвердження, перевіримо його реакцію (згоден закрити вікно чи ні) і адекватно відреагуємо.

Діалог показувати будемо за допомогою наступного коду.

У змінну n буде повертатися індекс варіанта, який вибрав користувач. Тобто в даному випадку n = 0, якщо користувач вибрав «Так» і n = 1, якщо «Ні». Як тільки користувач натискає кнопку закриття вікна, спрацьовує наш обробник і у нього викликається метод windowClosing з параметром WindowEvent event. Цей параметр є об'єкт подія. З нього можна отримати посилання на вікно Window, яке можемо закрити. Робимо це ось так.

За допомогою другого рядка ми говоримо системі, що необхідно завершити виконання програми. Якщо прибрати її, то вікно закриється, але додаток так і залишиться висіти в пам'яті. От і все. А тепер тестовий приклад.

Сподобалося це:

Навігація по публікаціям

Щоб не писати зайвого, використовуйте адаптер:
frame.addWindowListener (new WindowAdapter ()<…>);

Останні записи

хмара міток

Статистика

. такі блогери, як: