Nếu bạn chỉ muốn làm điều gì đó khi ứng dụng đang tắt, bạn có thể kéo tắt máy bằng cách sử dụng t mã của anh ấy:
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
// Do what you want when the application is stopping
}
}));
Tuy nhiên, điều này sẽ không cho phép bạn không đóng cửa sổ. Nếu bạn cần phải kiểm tra một cái gì đó trước khi thực sự rời khỏi, bạn có thể ghi đè lên các sự kiện windowClosing
:
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
// Do what you want when the window is closing.
}
});
Lưu ý rằng giải pháp đầu tiên - bằng cách sử dụng móc shutdown - có ưu điểm là nó không liên quan đến một sự kiện cửa sổ, và sẽ được thực hiện ngay cả khi ứng dụng bị dừng bởi một sự kiện khác (ngoại trừ, tất nhiên, nếu quá trình Java bị giết tàn nhẫn).
Khi tôi sử dụng hàm tạo Thread(), một tệp đã được lưu trong phương thức Thread.run() bị hỏng. Nhưng khi tôi sử dụng các nhà xây dựng Thread (Runnable) như được đề xuất trong ví dụ này tập tin đã được lưu đúng cách. Tôi may mắn hay có vấn đề về loại nhà xây dựng? – ka3ak
Điều này cũng rất hữu ích trong việc xử lý các applet. Khi bỏ chúng, void stop() không phải lúc nào cũng được gọi trong khi phương thức này là. Cảm ơn! : D – Daan
Trừ khi bạn đang sử dụng IDE chế biến và thoát khỏi bản phác thảo qua nút 'dừng', trong trường hợp này thậm chí phương pháp này dường như không hoạt động. – rednoyz