Banner Java

Mengenal Dan Memahami Cell Renderer Di Kelas JComboBox

Kelas JComboBox mendelegasikan sepenuhnya tugas untuk menampilkan obyek grafis di setiap sel combo box (combo box cells) ke combo box cell renderer. Semua combo box cell renderer harus mengimplementasikan interface ListCellRenderer. Anda dapat mengganti string dengan tampilan obyek grafis seperti image atau komponen Java di setiap sel dari obyek combo box dengan cara yang sama sebagaimana di list cell renderer. Ada perbedaan sedikit yang perlu diperhatikan yaitu Anda menggunakan metoda setCellRenderer untuk kelas JList dan menggunakan metoda setRenderer untuk kelas JComboBox.

Contoh program berikut ini masih menggunakan kelas ButtonLabelRenderer (kode program java di artikel Memahami Dan Mengenal List cell renderer dan DefaultListCellRenderer) sebagai obyek grafis yang akan ditampilkan di sel-sel dari combo box. Kelas DemoComboBoxCellRenderer adalah program utama yang menggunakan kelas ButtonLabelRenderer. Berikut ini adalah listing kode program dan hasil eksekusinya.

/ Nama file : DemoComboBoxCellRenderer.java
// Menggunakan cell renderer di obyek combo box

// Mengimpor kelas
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;

// Deklarasi kelas
public class DemoComboBoxCellRenderer extends JFrame
   implements ActionListener {

   final int JUMLAH_WARNA = 9;
   private JComboBox comboBox;
   private DefaultComboBoxModel comboBoxModel;
   private ListCellRenderer renderer;
   private JPanel panel;

   // Konstruktor tanpa argumen
   public DemoComboBoxCellRenderer() {

      comboBoxModel = new DefaultComboBoxModel();

      // Mengkonstruksi list cell renderer
      comboBoxModel.addElement(new Object[] {Color.BLACK, "Black Color"});
      comboBoxModel.addElement(new Object[] {Color.YELLOW, "Yellow Color"});
      comboBoxModel.addElement(new Object[] {Color.MAGENTA, "Magenta Color"});
      comboBoxModel.addElement(new Object[] {Color.GREEN, "Green Color"});
      comboBoxModel.addElement(new Object[] {Color.CYAN, "Cyan Color"});
      comboBoxModel.addElement(new Object[] {Color.ORANGE, "Orange Color"});
      comboBoxModel.addElement(new Object[] {Color.BLUE, "Blue Color"});
      comboBoxModel.addElement(new Object[] {Color.PINK, "Pink Color"});
      comboBoxModel.addElement(new Object[] {Color.RED, "Red Color"});

      renderer = new ButtonLabelRenderer();

      comboBox = new JComboBox(comboBoxModel);
      comboBox.setRenderer(renderer);
      comboBox.setMaximumRowCount(4);
      comboBox.addActionListener(this);

      // Mengkonstruksi dan menyesuaikan warna panel dengan indek combo box 0
      panel = new JPanel();
      Object[] duaObjek = (Object[])(comboBox.getItemAt(0));
      panel.setBackground((Color)duaObjek[0]);

      getContentPane().add(comboBox, BorderLayout.PAGE_START);
      getContentPane().add(panel, BorderLayout.CENTER);
   }

   // Menangani pemilihan elemen di list
   public void actionPerformed(ActionEvent ae) {

      Object[] duaObjek = (Object[])(comboBox.getSelectedItem());
      panel.setBackground((Color)duaObjek[0]);
   }

   // Metoda main
   public static void main(String[] args) {
      DemoComboBoxCellRenderer frame = new DemoComboBoxCellRenderer(); 
      frame.setTitle("Kelas DemoComboBoxCellRenderer");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(280, 200);
      frame.setVisible(true);
   }
}

Ketika Anda menggunakan combo box di program, item pertama yang ditampilkan adalah item dengan indek 0. Dari contoh program aplikasi di atas, obyek combo box menampilkan item warna hitam dengan string “Black Color”. Saat program aplikasi dijalankan pertama kali, Anda perlu menyesuaikan warna panel sesuai dengan warna yang ditampilkan di combo box.

Baris nomor 45 adalah pernyataan untuk merubah (casting) item atau elemen di indek 0 (comboBox.getItemAt(0)) ke larik obyek yang kemudian disimpan ke variabel duaObjek yang mengacu ke larik. duaObjek[0] yang berisi konstanta warna, kemudian dirubah (casting) ke tipe warna dan digunakan sebagai argumen metoda setBackground dari obyek panel untuk memberi warna latar belakang dari panel (baris nomor 46).

Menggunakan cell renderer di kelas JComboBox

Baca artikel terkait lainnya:

Untuk memperbaiki mutu konten, Anda dapat berpartisipasi dengan cara melaporkan apabila menemukan kesalahan ketik, kata-kata rangkap, redaksi kurang pas (jelas), gambar pendukung tidak ada dan sebagainya melalui form Kontak Kami untuk mendapatkan perbaikan. Terima kasih atas kerjasamanya.

Hindro HindriantoHindro adalah pendiri sekaligus admin termasmedia.com dan topikit.com, blog online yang mengulas teknologi informasi. Dunia web mulai ditekuni tahun 2012 dengan mempelajari CMS Joomla dan Wordpress. Beberapa buku yang sekarang dipelajari antara lain PHP, HTML5, ASP.NET 4.5, JavaScript, CSS3, MySQL, Adobe Dreamweaver, Adobe Photoshop dan Adobe Flash.