2012-12-05 47 views
6

Tôi đang cố gọi một hàm để làm dọn dẹp khi cửa sổ của tôi (được tạo bằng Java Swing) bị đóng. Trong mã khởi tạo của tôi, tôi làm điều này:Cách tạo trình xử lý để đóng cửa sổ trong 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); 
      } 
     }); 
     ... 
    } 
} 

Nhưng chức năng "formLoginWindowClosed" không bao giờ được gọi là khi tôi nhấn nút thoát. Tôi cũng đã thử tạo trình nghe với java.awt.event.WindowAdapter làm đối số, nhưng nó cũng không hoạt động. Tôi nên tạo trình nghe để đóng cửa sổ như thế nào? Cảm ơn trước.

+0

thể trùng lặp của [Làm thế nào để nắm bắt một sự kiện gần trong xoay java] (http://stackoverflow.com/questions/8781108/how-to-capture-a-close -event-in-java-swing) – Suma

Trả lời

8

Với khung được đặt để thoát khi đóng, windowClosed sẽ không bao giờ được gọi, chủ yếu là do hệ thống đã thoát trước khi sự kiện có thể được nâng lên.

Hãy thử sử dụng windowClosing để thay thế.

Ngoài ra, bạn có thể sử dụng một shut down hook

+1

Cảm ơn, tôi đã thay đổi setDefaultCloseOperation thành DISPOSE_ON_CLOSE và bây giờ hoạt động đúng. – Joel

+0

@Jelel nếu điều này giải quyết được vấn đề của bạn, hãy suy nghĩ về việc đánh dấu dấu trống bên cạnh bài đăng. +1 công cụ tuyệt vời –

Các vấn đề liên quan