Contoh program berikut ini masih menggunakan kelas ButtonLabelRenderer (kode program java di artikel Memahami Dan Mengenal List cell renderer dan DefaultListCellRenderer Di Java) 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | // 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 menggunakan combo box di program, item pertama yang ditampilkan adalah item dengan indek 0. Dari contoh program di atas, obyek combo box menampilkan item warna hitam dengan string “Black Color”. Saat program dijalankan pertama kali, Anda perlu menyesuaikan warna panel agar sama dengan warna yang ditampilkan di combo box.
Baris nomor 45 di contoh program adalah pernyataan untuk mengubah (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 diubah (casting) ke tipe warna dan digunakan sebagai argumen metoda setBackground dari obyek panel untuk memberi warna latar panel (baris nomor 46).