2012-12-05 8 views
6

Próbuję wywołać funkcję do czyszczenia po zamknięciu okna (utworzonego przy użyciu Java Swing). W moim kodzie inicjującym zrobić to:Jak utworzyć procedurę obsługi zamykania okna w Java Swing

public class FormLogin extends JFrame{ 
    private void initComponents(){ 
     ... 
     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     addWindowListener(new java.awt.event.WindowAdapter() { 
      public void windowClosed(java.awt.event.WindowEvent evt){ 
       formLoginWindowClosed(evt); 
      } 
     }); 
     ... 
    } 
} 

ale funkcja „formLoginWindowClosed” nigdy nie jest wywoływana po naciśnięciu przycisku wyjścia. Próbowałem również utworzyć obiekt nasłuchujący z argumentem java.awt.event.WindowAdapter, ale też nie działał. Jak utworzyć program nasłuchujący do zamykania okna? Z góry dzięki.

+0

możliwy duplikat [Jak uchwycić ścisły wydarzenie w Java Swing] (http://stackoverflow.com/questions/8781108/how-to-capture-a-close -event-in-java-swing) – Suma

Odpowiedz

8

Po ustawieniu klatki na zamknięcie, windowClosed nigdy nie zostanie wywołane, głównie dlatego, że system został już zakończony, zanim zdarzenie może zostać podniesione.

Spróbuj użyć zamiast tego windowClosing.

Alternatywnie, można użyć shut down hook

+1

Dzięki, zmieniłem setDefaultCloseOperation na DISPOSE_ON_CLOSE i teraz działa poprawnie. – Joel

+0

@Joel, jeśli to rozwiązało twój problem, pomyśl o zaznaczeniu pustego znacznika wyboru obok wpisu. +1 Szalone fajne rzeczy –

Powiązane problemy