tag Archives: Zamykanie okien

Jak zamknąć JFrame z potwierdzeniem?

Przeglądając wyniki wujka Google związane z Javą, natknąłem się kilka razy na mniej lub bardziej udane przykłady kodu wyświetlającego okno, które w momencie zamykania wyświetla dialog z zapytaniem, czy użytkownik jest pewien, że chce je zamknąć. Postanowiłem samemu przygotować podobny przykład, który przy okazji uzasadni moje podejście do mechanizmu zamykania okien przedstawione we wpisie Zamykanie okien poprzez wciśnięcie przycisku Escape.

Prawidłowe zamykanie okien w Swing'u

Bawiąc się Swingiem od samego początku wydawało mi się, że aby prawidłowo zamknąć okno, wystarczy w akcji przycisku Zamknij wywołać:

1
2
3
private void closelButtonActionPerformed(java.awt.event.ActionEvent evt) {
    this.dispose();
}

Okazuje się jednak, że niekoniecznie jest to prawidłowe podejście, ponieważ jeśli wywołamy bezpośrednio dispose(), to nie zostaną poinformowane listenery okna oczekujące na zdarzenie zamykania okna. Co za tym idzie, zachowanie aplikacji będzie inne, niż w przypadku wciśnięcia przycisku X zamykającego okno. Zazwyczaj jednak chcemy zachować spójność działania aplikacji i obsługi zdarzeń.