Program berikut menyertakan kode yang akan menghentikan program yang kekurangan utas asing tanpa secara eksplisit memanggil System.exit (). Untuk menerapkan contoh ini ke aplikasi yang menggunakan utas / pendengar / pengatur waktu / dll, seseorang hanya perlu menyisipkan kode pembersihan yang meminta (dan, jika ada, menunggu) penghentiannya sebelum WindowEvent dimulai secara manual dalam actionPerformed ().
Bagi mereka yang ingin menyalin / menempel kode yang mampu berjalan persis seperti yang ditunjukkan, metode utama yang sedikit jelek tetapi tidak relevan disertakan di bagian akhir.
public class CloseExample extends JFrame implements ActionListener {
private JButton turnOffButton;
private void addStuff() {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
turnOffButton = new JButton("Exit");
turnOffButton.addActionListener(this);
this.add(turnOffButton);
}
public void actionPerformed(ActionEvent quitEvent) {
/* Iterate through and close all timers, threads, etc here */
this.processWindowEvent(
new WindowEvent(
this, WindowEvent.WINDOW_CLOSING));
}
public CloseExample() {
super("Close Me!");
addStuff();
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
CloseExample cTW = new CloseExample();
cTW.setSize(200, 100);
cTW.setLocation(300,300);
cTW.setVisible(true);
}
});
}
}