Kali ini saya ingin berbagi cara sederhana untuk menampilkan dialog konfirmasi sebelum keluar dari aplikasi. Dengan syarat aplikasi yang kita buat harus menggunakan JFrame sebagai frame utama.
Langkah-langkah yang harus kita lakukan adalah sebagai berikut:
1. Ganti property default close operation dari JFrame menjadi DO_NOTHING_ON_CLOSE, value ini dimaksudkan agar ketika button close dari JFrame diklik tidak akan terjadi apa-apa.
Sebaliknya jika valuenya adalah EXIT_ON_CLOSE, maka ketika button close dari JFrame diklik maka program akan tertutup.
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
2. Yang kedua adalah kita harus menambahkan WindowListener pada JFrame. Interface WindowListener memiliki beberapa method terkait event terhadap window (yakni JFrame), namun yang harus kita override hanyalah method windowClosing, method ini akan dipanggil ketika button close diklik.
Sebagai informasi, apabila kita menambahkan WindowListener secara langsung maka semua method dari interface tersebut harus kita implementasikan, sehingga coding yang kita tulis akan terlihat sangat panjang. Padahal yang kita butuhkan hanya mengimplementasikan method windowClosing.
Untuk itu Java menyediakan class WindowAdapter yang sudah mengimplementasikan interface WindowListener, sehingga cukup method windowClosing saja yang perlu kita tulis.
this.addWindowListener(new WindowAdapter() {
@Override public void windowClosing(WindowEvent e) { doExit(); } });
3. Dan yang terakhir adalah kita harus menambahkan dialog konfirmasi untuk mengambil pilihan user apakah melanjutkan keluar dari aplikasi atau tidak. Kita bisa menggunakan JOptionPane.showConfirmDialog.
public void doExit() { int confirm = JOptionPane.showConfirmDialog(this, "Konfirmasi Keluar Aplikasi", "Yakin untuk keluar dari program", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (confirm == JOptionPane.YES_OPTION) { System.exit(0); } }
Secara keseluruhan, listingnya adalah sebagai berikut (perlu diketahui saya menggunakan Netbeans 7.2 untuk menulis codenya) :
public class MainFrame extends javax.swing.JFrame { /** * Creates new form MainFrame */ public MainFrame() { initComponents(); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); initListener(); } private void initListener() { this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { doExit(); } }); } public void doExit() { int confirm = JOptionPane.showConfirmDialog(this, "Konfirmasi Keluar Aplikasi", "Yakin untuk keluar dari program", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (confirm == JOptionPane.YES_OPTION) { System.exit(0); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { new MainFrame().setVisible(true); } }); } }
Semoga bermanfaat :)
Mantap.👍
ReplyDeleteterimakasih atas codingannya kak ,itu sangat membantu saya:)
ReplyDeleteinfonya sangat bermanfaat bagi ane
ReplyDeletepenyedot timah solder