Home > Java, Programming, Tips > Contoh Program Menggunakan JComboBox dan JList

Contoh Program Menggunakan JComboBox dan JList

Beberapa hari yang lalu saya mencoba untuk membuat program yang mempunyai tampilan sedikit dinamik. Dalam hal ini misalnya untuk ComboBox, ketika kita memilih salah item, ComboBox yang lain berubah isinya menyesuaikan pilihan dari ComboBox yang pertama. Begitu juga dengan saat dilakukan pemilihan pada List yang menggunakan JList langsung ada perubahan pada tampilan misal saja label tanpa perlu menekan tombol button tertentu. Intinya keduanya bekerja mirip seperti event onchange pada javascript. Sekalian saja saya posting dua program sederhana yang saya buat untuk mencoba fitur tersebut.

Perlu diperjelas, disini saya bukan mau memberi tutorial, tetapi contoh program, hanya saja saya beri comment pada source code program yang akan saya berikan, yang semoga membuat lebih mudah dimengerti. Jika ada pertanyaan silahkan saja untuk bertanya, lagipula gratis dan dengan senang hati saya menjawabnya. Berikut saya tunjukkan tampilan program sederhana yang menggunakan JComboBox dan JList beserta source code programnya.

Tampilan program TestJComboBox:

Source code:

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class TestJComboBox implements ActionListener {

    private JComboBox combobox1, combobox2;
    private JButton button;
    //private JLabel label;
    private JTextField label;

    //Konstruktor dari class TestJComboBox, yang nantinya akan digunakan pada
    //  method main()
    TestJComboBox() {
        //Komponen combo box untuk pilihan pertama
        combobox1 = new JComboBox();
        combobox1.setLocation(10, 10);
        combobox1.setSize(180, 20);
        combobox1.addItem("Pilih Salah Satu");
        combobox1.addItem("Buah");
        combobox1.addItem("Sayur");
        //Ditambahkan ActionListener, berguna saat ada pemilihan salah satu item
        combobox1.addActionListener(this);
        //Komponen combo box untuk pilihan kedua yang akan muncul pilihannya
        //  saat user sudah memilih salah satu pilihan dari combobox pertama yaitu
        //  antara buah atau sayur
        combobox2 = new JComboBox();
        combobox2.setLocation(10, 40);
        combobox2.setSize(180, 20);
        //Komponen button untuk menampilkan pilihan user untuk combobox kedua
        //  yang nantinya ditampilkan pada JTextField label
        button = new JButton("Pilih");
        button.setLocation(10, 70);
        button.setSize(180, 20);
        button.addActionListener(this);
        //Komponen JTextField yang berfungsi seperti label, cenderung saya pilih
        //  karena adanya borderline tanpa perlu membuat class Border lebih dahulu
        label = new JTextField(20);
        label.setLocation(10, 100);
        label.setSize(180, 20);
        label.setFont(new Font("Courier New", Font.PLAIN, 14));
        //Dilakukan penyettingan supaya textfield tidak bisa diubah2 oleh user
        label.setEditable(false);
    }

    //Method untuk menampilkan frame/tampilan utama program dengan menggunakan
    //  class JFrame
    public void createAndShowGUI() {
        JFrame.setDefaultLookAndFeelDecorated(false);
        JFrame frame = new JFrame("Demo JComboBox");
        frame.setLayout(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(combobox1);
        frame.getContentPane().add(combobox2);
        frame.getContentPane().add(label);
        frame.getContentPane().add(button);
        frame.setBounds(0, 0, 215, 180);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    //Method utama pada class ini
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            //Terima jadi saja, intinya pake SwingUtilities dan menggunakan class
            //  Runnable sehingga saya dapat menggunakan method run(), anggap saja
            //  blok kode disini sebagai template

            @Override
            public void run() {
                //Membuat objek TestJComboBox sesuai dengan konstruktor sebelumnya
                TestJComboBox prog = new TestJComboBox();
                //Memanggil method createAndShowGUI() untuk menampilkan frame utama
                prog.createAndShowGUI();
            }
        });
    }

    @Override
    //Method utama untuk menangani adanya event dari user seperti pemilihan combo
    //  box ataupun penekanan button
    public void actionPerformed(ActionEvent e) {
        //Dicari varible yang berisi pilihan dari user untuk combobox1
        Object select1 = combobox1.getSelectedItem();
        //Jika event yang terjadi adalah adanya pemilihan item dari combobox1
        if (e.getSource() == combobox1) {
            if (select1 == "Buah") {
                //Jika yang dipilih dari combobox1 adalah buah
                //Hapus terlebih dahulu semua item pada combobox2
                combobox2.removeAllItems();
                //Tambahkan pilihan item untuk buah
                combobox2.addItem("Apel");
                combobox2.addItem("Jeruk");
                combobox2.addItem("Mangga");
                combobox2.addItem("Anggur");
                combobox2.addItem("Pir");
            } else if (select1 == "Sayur") {
                //Jika yang dipilih dari combobox1 adalah sayur
                //Hapus terlebih dahulu semua item pada combobox2
                combobox2.removeAllItems();
                //Tambahkan pilihan item untuk sayur
                combobox2.addItem("Timun");
                combobox2.addItem("Bayam");
                combobox2.addItem("Kangkung");
            } else {
                //Jika yang dipilih bukan keduanya atau "Pilih Salah Satu"
                combobox2.removeAllItems();
            }
            //Jika event adalah adanya penekanan tombol button
        } else if (e.getSource() == button) {
            if (select1 != "Pilih Salah Satu") {
                //Jika user telah memilih salah satu dari buah atau sayur
                //Dicari variable select2 yang berasal dari combobox2 untuk ditampilkan
                //  pada label
                Object select2 = combobox2.getSelectedItem();
                //Dilakukan casting menjadi tipe String terlebih dahulu sebelum dikonkat
                label.setText((String) select2 + " pilihan saya!");
            } else {
                //Jika user tidak memilih keduanya dan memilih item "Pilih Salah Satu"
                label.setText("Pilih Salah Satu!");
            }
        }
    }
}

Tampilan program TestJList:

Source code:

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class TestJList implements ActionListener, ListSelectionListener {

    private JList list;
    //Untuk demo kali ini saya menggunakan class DefaultListModel sebagai input
    //  parameter dari JList, daripada menggunakan array, class tersebut lebih
    //  mudah ketika user ingin menambahkan atau menghapus salah satu list
    private DefaultListModel listmodel;
    //Disini saya menggunakan JScrollPane untuk menampung JList, sehingga ketika
    //  list sudah sangat panjang akan muncul scoller untuk dapat melihat list
    //  dari awal sampai akhir
    private JScrollPane scroll;
    //private JLabel label;
    private JTextField label;
    private JTextField textfield;
    private JButton button1, button2;

    //Konstruktor dari class TestJList, yang nantinya akan digunakan pada
    //  method main()
    TestJList() {
        //Komponen JTextField yang berfungsi seperti label, cenderung saya pilih
        //  karena adanya borderline tanpa perlu membuat objek Border lebih dahulu
        label = new JTextField("Testing");
        label.setLocation(180, 10);
        label.setSize(100, 20);
        label.setFont(new Font("Courier New", Font.PLAIN, 14));
        label.setEditable(false);
        //Membuat JList dengan membuat objek DefaultListModel tersebut dahulu
        listmodel = new DefaultListModel();
        list = new JList(listmodel);
        //List yang saya buat disini hanya bisa dipilih satu element saja
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        //Objek list saya beri ListSelectionListener sehingga dapat diterima event
        //  saat user memilih salah satu list
        list.addListSelectionListener(this);
        //Pada awal list, saya beri dua item/element, untuk menambahkan element
        //  digunakan method addElement pada objek list yang telah di-casting
        //  menjadi tipe DefaultListModel
        ((DefaultListModel) list.getModel()).addElement("Satu");
        ((DefaultListModel) list.getModel()).addElement("Dua");
        //Membuat objek scroller untuk menampung JList
        scroll = new JScrollPane(list);
        scroll.setLocation(10, 10);
        scroll.setSize(150, 160);
        //Objek textfield ini akan menerima string dari user sebagai element/item
        //  yang akan ditambahkan oleh user
        textfield = new JTextField(10);
        textfield.setLocation(180, 40);
        textfield.setSize(100, 20);
        //Objek button1 adalah button yang digunakan untuk menambahkan element list
        //  yang baru
        button1 = new JButton("Tambah");
        button1.setLocation(180, 70);
        button1.setSize(100, 20);
        button1.addActionListener(this);
        //Objek button1 adalah button yang digunakan untuk menghapus element list
        //  yang baru
        button2 = new JButton("Hapus");
        button2.setLocation(180, 100);
        button2.setSize(100, 20);
        button2.addActionListener(this);
    }

    //Method untuk menampilkan frame/tampilan utama program dengan menggunakan
    //  class JFrame
    public void createAndShowGUI() {
        JFrame.setDefaultLookAndFeelDecorated(false);
        JFrame frame = new JFrame("Demo JList");
        frame.setLayout(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(scroll);
        frame.getContentPane().add(label);
        frame.getContentPane().add(button1);
        frame.getContentPane().add(button2);
        frame.getContentPane().add(textfield);
        frame.setBounds(0, 0, 320, 230);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            //Terima jadi saja, intinya pake SwingUtilities dan menggunakan class
            //  Runnable sehingga saya dapat menggunakan method run(), anggap saja
            //  blok kode disini sebagai template

            @Override
            public void run() {
                //Membuat objek TestJList sesuai dengan konstruktor sebelumnya
                TestJList prog = new TestJList();
                //Memanggil method createAndShowGUI() untuk menampilkan frame utama
                prog.createAndShowGUI();
            }
        });
    }

    @Override
    //Method utama untuk menangani adanya event dari user yaitu penekanan button
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == button1) {
            //Apabila user menekan button1 untuk menambahkan element list yang baru
            String text = textfield.getText();
            //Didapatkan variable text yang berasal dari textfield yang dibuat
            //  sebelumnya
            if (!text.equals("")) {
                //Jika isi dari textfield tidak kosong
                //Untuk menambahkan sama seperti sebelumnya, tinggal memasukkan variable
                //  text pada input method addElement
                ((DefaultListModel) list.getModel()).addElement(text);
            } else {
                //Jika textfield kosong, ditampilkan pada label tulisan "Tulis List!"
                label.setText("Tulis List!");
            }
        } else if (e.getSource() == button2) {
            //Apabila user menekan button1 untuk menghapus element list yang baru
            //Dicari terlebih dahulu index dari element list yang akan dihapus
            int index = list.getSelectedIndex();
            if (index != -1) {
                //Jika user sudah memilih salah satu item/element pada JList
                label.setText("Deleted");
                //Untuk menghapus salah satu element dapat digunakan method remove(),
                //  sama seperti saat menambahkan element, objek list di-casting
                //  terlebih dahulu menjadi tipe DefaultListModel
                ((DefaultListModel) list.getModel()).remove(index);
            } else {
                //Jika user belum memilih salah satu element, ditampilkan pada label
                //  pesan "Pilih List!"
                label.setText("Pilih List!");
            }
        }
    }

    @Override
    //Method ini bekerja saat user memilih salah satu list (dalam hal ini di-klik)
    //  sehingga salah satu element list diberi warna background berbeda, silahkan
    //  menjalankan program untuk lebih jelasnya
    public void valueChanged(ListSelectionEvent e) {
        //Ketika user menekan salah satu list, maka method ini akan bekerja dan
        //  karena hanya ada dari list sebenarnya percabangan (if) ini bisa dibuang
        if (e.getSource() == list) {
            //Sebelumnya dicari terlebih dahulu element mana yang telah dipilih
            int index = list.getSelectedIndex();
            //Jika tidak terjadi event penghapusan element list, maka akan ditampikan
            //  pada label item/element yang dipilih
            if (index != -1) {
                String listtext = (String) list.getModel().getElementAt(index);
                label.setText(listtext);
            }
        }
    }
}

Semoga bermanfaat😀

Categories: Java, Programming, Tips
  1. April 22, 2012 at 7:36 am

    follow up dari PLN kmaren, hahaha, langsung ditulis nang blog

    • April 22, 2012 at 1:46 pm

      yoyoi, kmaren jadinya nyoba2 pake netbeans doank, gak pake liat punya org laen :p
      emg netbeans membantu buat nyari2 method yg baru

  2. ariobw
    April 25, 2012 at 1:38 pm

    jumawa banget nih😀

    • April 25, 2012 at 6:38 pm

      apaan sih yo, situ kan lebih jago, GUI TA situ lebih mantep jauh lah

  3. Nurul Huda
    March 26, 2014 at 1:07 pm

    thanks ilmunya gan…

  4. February 9, 2015 at 3:56 pm

    bagaimana caranya kalau ada perintah pada comboBox kemudia ingin di tampilkan pada teksField contoh di comboBox 1 kemudian tampil 22 pada teksField

  5. January 10, 2016 at 9:51 pm

    THANK YOU VERY MUCH BROOOOO

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: