2010-03-18 23 views
16

Tôi đang phát triển một ứng dụng đơn giản để quản lý phần hoạt động của một doanh nghiệp sử dụng Swing, nhưng tôi cần điều đó khi thoát khỏi ứng dụng, nó thực hiện điều này:Sự kiện OnExit cho một ứng dụng Swing?

updateZonas(); 
db.close(); 

Nhưng làm thế nào tôi có thể làm điều này?

Trả lời

33
Runtime.getRuntime().addShutdownHook(new Thread() 
{ 
    @Override 
    public void run() 
    { 
     updateZonas(); 
     db.close(); 
    } 
}); 

này làm việc cho bất kỳ ứng dụng Java (Swing/AWT/Console)

+4

Mức này quá thấp. – vemv

+1

@vemv tại sao nó ** quá ** mức thấp? Chắc chắn nếu bạn cần phải đánh chặn sự kiện xuất cảnh dưới bất kỳ điều kiện nào bạn cần một móc cấp thấp? – MTCoster

7

Thêm WindowListener vào JFrame của bạn. Phương thức windowClosing của nó sẽ gọi bất kỳ mã nào bạn cần, sau đó System.exit(0) (hoặc một số mã trả lại khác).

26

Bạn đang sử dụng JFrame? nếu có thì bạn có thể thử này:

myframe.addWindowListener(new java.awt.event.WindowAdapter() { 
     public void windowClosing(WindowEvent winEvt) { 
      updateZonas(); 
      db.close(); 
      System.exit(0); 
     } 
    }); 
+4

Cũng đặt một try/catch/finally xung quanh các cuộc gọi updateZonas và dbclose trong trường hợp một cái gì đó là sai. Bạn có thể cho người dùng biết điều gì đó đã xảy ra và quyết định có nên thoát khỏi ứng dụng hay không. –

+0

Là 'System.exit (0);' cần thiết? – Metatron

+0

Không cần thiết. – Brain

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