author Ahmad Muhardian

Belajar Java Swing: Cara Menggunakan JOptionPane untuk Membuat Dialog


Belajar Pemrograman GUI dengan Java Swing

Agar program yang kita mempu berinteraksi dengan pengguna, kita harus membuat sebuah dialog dengannya.

Pada Java Swing, terdapat sebuah komponen bernama JOptionPane untuk membuat dialog yang interakif.

Bagaimana cara menggunakan JOptionPane?

Mari kita simak pembahsannya…

Mengenal JOptionPane

JOptionPane merupakan sebuah kelas yang menyediakan jendela dialog.

JOptionPane bisa kita gunakan untuk mengambil input, menampilkan informasi, menampilkan pesan error, menampilkan dialog konfirmasi, dan lain-lain.

Sebelum menggunakan JOptionPane, kita harus mengimpornya terlebih dahulu ke dalam program:

import javax.swing.JOptionPane;

Terdapat empat fungsi atau metode yang sering digunakan pada JOptionPane:

  1. showConfirmDialog() : untuk menampilkan dialog konfirmasi;
  2. showInputDialog() : untuk menampilkan dialog input;
  3. showMessageDialog() : untuk menampilkan pesan/informasi;
  4. showOptionDialog() : untuk menampilkan dialog pilihan.

Class JOptionPane dapat digunakan langsung tanpa harus membuat objek seperti ini:

JOptionPane.showMessageDialog(null, "Hello!");

Keterangan:

  • null adalah parameter untuk komponen induknya, bisa diberikan null atau this.
  • "Hello!" adalah teks yang ingin kita tampilkan di dalam dialog.

Untuk lebih jelasnya, mari kita coba dalam program.

Contoh Program dengan JOptionPane

Silahkan buat sebuah jendela JFrame baru, kemudian buatlah desainnya seperti ini:

Desain Form JFrame

Berikan variabel name untuk setiap tombolnya sebagai berikut:

  • Message Dialog: btnMsgDialog
  • Input Dialog: btnInputDialog
  • Dialog Konfirmasi: btnConfirmDialog
  • Dialog Pilihan: btnOptionDialog

Setelah itu isi kode untuk masing-masing tombol sebagai berikut.

Message Dialog: btnMsgDialog

private void btnMsgDialogActionPerformed(java.awt.event.ActionEvent evt) {                              
    JOptionPane.showMessageDialog(this, "Ini Adalah Dialog Informasi");        
} 

Input Dialog: btnInputDialog

private void btnInputDialogActionPerformed(java.awt.event.ActionEvent evt) {                                               
    String inputan = JOptionPane.showInputDialog("Inputkan Sesuatu");
    JOptionPane.showMessageDialog(this, "Kamu meng-inputkan: " + inputan);
        
} 

Dialog Konfirmasi: btnConfirmDialog

private void btnConfirmDialogActionPerformed(java.awt.event.ActionEvent evt) {                                                       
    int jawab = JOptionPane.showConfirmDialog(this, "Silahkan Konfirmasi?");
    
    // 0 : yes
    // 1 : no
    // 2 : cancel
    
    switch(jawab){
        case JOptionPane.YES_OPTION: 
            JOptionPane.showMessageDialog(this, "Kamu menjawab ya");
            break;
        case JOptionPane.NO_OPTION:
            JOptionPane.showMessageDialog(this, "Kamu menjawab tidak");
            break;
        case JOptionPane.CANCEL_OPTION:
            JOptionPane.showMessageDialog(this, "Kamu mejawab batal");
    }
}

Dialog Pilihan: btnOptionDialog

private void btnOptionDialogActionPerformed(java.awt.event.ActionEvent evt) {

    int jawab = JOptionPane.showOptionDialog(this, 
                    "Ingin Keluar?", 
                    "Keluar", 
                    JOptionPane.YES_NO_OPTION, 
                    JOptionPane.QUESTION_MESSAGE, null, null, null);
    
    if(jawab == JOptionPane.YES_OPTION){
        JOptionPane.showMessageDialog(this, "Program Akan Keluar");
        System.exit(0);
    }
        
} 

Sehingga kode lengkapnya akan seperti ini:

*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package dialog;

import javax.swing.JDesktopPane;
import javax.swing.JOptionPane;

/**
 *
 * @author petanikode
 */
public class Berdialog extends javax.swing.JFrame {

    /**
     * Creates new form Berdialog
     */
    public Berdialog() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        btnMsgDialog = new javax.swing.JButton();
        btnInputDialog = new javax.swing.JButton();
        btnConfirmDialog = new javax.swing.JButton();
        btnOptionDialog = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        btnMsgDialog.setText("Message Dialog");
        btnMsgDialog.setName("btnMsgDialog"); // NOI18N
        btnMsgDialog.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnMsgDialogActionPerformed(evt);
            }
        });

        btnInputDialog.setText("Input Dialog");
        btnInputDialog.setName("btnInputDialog"); // NOI18N
        btnInputDialog.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnInputDialogActionPerformed(evt);
            }
        });

        btnConfirmDialog.setText("Dialog Konfirmasi");
        btnConfirmDialog.setName("btnConfirmDialog"); // NOI18N
        btnConfirmDialog.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnConfirmDialogActionPerformed(evt);
            }
        });

        btnOptionDialog.setText("Dialog Pilihan");
        btnOptionDialog.setName("btnOptionsDialog"); // NOI18N
        btnOptionDialog.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnOptionDialogActionPerformed(evt);
            }
        });

        jLabel1.setText("Belajar JOptionPane");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(60, 60, 60)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btnConfirmDialog)
                    .addComponent(btnMsgDialog))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 57, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btnInputDialog)
                    .addComponent(btnOptionDialog))
                .addGap(62, 62, 62))
            .addGroup(layout.createSequentialGroup()
                .addGap(129, 129, 129)
                .addComponent(jLabel1)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(31, 31, 31)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 53, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnMsgDialog)
                    .addComponent(btnInputDialog))
                .addGap(74, 74, 74)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnConfirmDialog)
                    .addComponent(btnOptionDialog))
                .addGap(63, 63, 63))
        );

        pack();
    }// </editor-fold>                        

    private void btnMsgDialogActionPerformed(java.awt.event.ActionEvent evt) {                                             
        
        JOptionPane.showMessageDialog(this, "Ini Adalah Dialog Informasi");
        
    }                                            

    private void btnInputDialogActionPerformed(java.awt.event.ActionEvent evt) {                                               
        
        String inputan = JOptionPane.showInputDialog("Inputkan Sesuatu");
        JOptionPane.showMessageDialog(this, "Kamu meng-inputkan: " + inputan);
        
    }                                              

    private void btnConfirmDialogActionPerformed(java.awt.event.ActionEvent evt) {                                                 
        
        int jawab = JOptionPane.showConfirmDialog(this, "Silahkan Konfirmasi?");
        
        // 0 : yes
        // 1 : no
        // 2 : cancel
        
        switch(jawab){
            case JOptionPane.YES_OPTION: 
                JOptionPane.showMessageDialog(this, "Kamu menjawab ya");
                break;
            case JOptionPane.NO_OPTION:
                JOptionPane.showMessageDialog(this, "Kamu menjawab tidak");
                break;
            case JOptionPane.CANCEL_OPTION:
                JOptionPane.showMessageDialog(this, "Kamu mejawab batal");
        }
    }                                                

    private void btnOptionDialogActionPerformed(java.awt.event.ActionEvent evt) {                                                
        
        int jawab = JOptionPane.showOptionDialog(this, 
                        "Ingin Keluar?", 
                        "Keluar", 
                        JOptionPane.YES_NO_OPTION, 
                        JOptionPane.QUESTION_MESSAGE, null, null, null);
        
        if(jawab == JOptionPane.YES_OPTION){
            JOptionPane.showMessageDialog(this, "Program Akan Keluar");
            System.exit(0);
        }
        
    }                                               

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Berdialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Berdialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Berdialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Berdialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Berdialog().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton btnConfirmDialog;
    private javax.swing.JButton btnInputDialog;
    private javax.swing.JButton btnMsgDialog;
    private javax.swing.JButton btnOptionDialog;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration                   
}

Setelah itu, silahkan jalankan programnya dan perhatikanlah hasilnya.

Program JOption Pane

Untuk showConfirmDialog() dan showOptionDialgo() hasilnya sama-sama dalam bentuk dialgo konfirmasi yang berisi tombol “Yes”, “No”, dan “Cancel”.

Masing-masing tombol, apabila ditekan akan menghasilkan nilai berupa integer.

  • “Yes” akan menghasilkan 0;
  • “No” akan menghasilkan 1;
  • “Cancel” akan menghasilkan 2.

Untuk mempermudah pemrosesan, JOptionPane sudah menyediakan konstanta:

  • JOptionPane.YES_OPTION yang bernilai 0;
  • JOptionPane.NO_OPTION yang bernilai 1;
  • JOptionPane.CANCEL_OPTION yang bernilai 2.

Sehingga kita dapat menggunakannya dalam blok Switch/Case seperti ini:

switch(jawab){
    case JOptionPane.YES_OPTION: 
        JOptionPane.showMessageDialog(this, "Kamu menjawab ya");
        break;
    case JOptionPane.NO_OPTION:
        JOptionPane.showMessageDialog(this, "Kamu menjawab tidak");
        break;
    case JOptionPane.CANCEL_OPTION:
        JOptionPane.showMessageDialog(this, "Kamu mejawab batal");
}

Akhir Kata…

Itulah contoh penggunaan JOptionPane dalam program Java.

Sebenarnya masih banyak yang belum kita coba, seperti mengganti ikon, mengubah teks di tombol, mengganti judul, dll.

Silahkan eksperimen sendiri.

Kalau ada yang ditanyakan, masi sampaikan melalui komentar.

Baca Juga ini

Belajar Java: Cara Mengambil Input dan Menampilkan Output

Belajar Java: Cara Mengambil Input dan Menampilkan Output

Seperti yang kita ketahui, program komputer terdiri dari tiga komponen utama, yaitu: input, proses, dan output. Input: nilai yang kita masukan ke program Proses: langkah demi langkah yang dilakukan untuk mengelola input menjadi sesuatu yang berguna Output: hasil pengolahan Semua bahasa pemrograman telah menyediakan fungs-fungsi untuk melakukan input dan output. Java sendiri sudah menyediakan tiga class untuk mengambil input: Class Scanner; Class BufferReader; dan Class Console.

Belajar Pemrograman Java: Variabel dan Tipe Data

Belajar Pemrograman Java: Variabel dan Tipe Data

Variabel adalah tempat menyimpan nilai sementara. Itu saja. Serius? Iya serius, kalau mau yang lebih panjang… …coba kita lihat pengertiannya dari Wikipedia: Variabel: (Lat) 1. berubah-ubah, tidak tetap; 2. deklarasi sesuatu yang memiliki variasi nilai 3. berbeda-beda dalam bahasa pemrograman disebut juga simbol yang mewakili nilai tertentu, variabel yang dikenal di sub program disebut variabel lokal. sedang yang di kenal secara umum/utuh dalam satu program disebut variabel global.

Belajar Java: Konsep Pemrograman Java yang Harus dipahami

Belajar Java: Konsep Pemrograman Java yang Harus dipahami

Materi yang wajib kamu pelajari untuk memahami konsep dasar pemrograman Java.

Belajar Java: 6 Jenis Operator yang Harus Dipahami

Belajar Java: 6 Jenis Operator yang Harus Dipahami

Operator dalam pemrograman digunakan untuk melakukan operasi tertentu. Misalkan kita ingin menjumlahkan nilai dari variabel x dan y, maka kita bisa menggunakan operator penjumlahan (+). x + y Ada enam jenis kelompok operator dalam pemrograman Java: Operator Artimatika; Operator Penugasan; Operator Pembanding; Operator Logika; Operator Bitwise; dan Operator Ternary. Bila digambarkan dalam mind map, akan terlihat seperti ini: Ukuran penuh dari mind map ini dapat kamu lihat di: coggle.

Belajar Java #02: Persiapan Pemrograman Java di Linux

Belajar Java #02: Persiapan Pemrograman Java di Linux

Sebenarnya, kita hanya butuh dua alat untuk bisa memulai pemrograman Java di Linux. Apa saja itu? JDK Netbeans Apa itu JDK? Apa itu Netbeans? Bagaimana menginstalnya di Linux? Mari kita bahas.. googletag.cmd.push(function () { googletag.display('div-gpt-ad-multibanner1'); }); Apa itu JDK?JDK merupakan singkatan dari Java Development Kit. JDK menyediakan compiler, library, API, dan tools lainnya. Jika kamu baru pertama kali mendengar istilah-istilah ini, jangan khawatir.

Fungsi range() di pemrograman python

Fungsi range() di pemrograman python

Fungsi range() merupakan fungsi yang menghasilkan list. Fungsi ini akan menciptakan sebuah list baru dengan rentang nilai tertentu. Contoh: 1. list dari 0 sampai 10 range(10)akan menghasilkan: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]2. list dari 4 sampai 12 range(4, 12)akan menghasilkan: [4, 5, 6, 7, 8, 9, 10, 11]3. list dari 10 sampai 50 dengan interval 5 range(10,50,5)akan menghasilkan: [10, 15, 20, 25, 30, 35, 40, 45]Dari contoh-contoh di atas, dapat kita pahami arti parameter yang diberikan untuk fungsi ini.