Mega Code Archive

 
Categories / Java by API / Javax Swing
 

Implements ListCellRenderer

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultListCellRenderer; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; public class MainClass {   public static void main(String args[]) throws Exception {     Color colors[] = { Color.GREEN, Color.ORANGE, Color.PINK, Color.RED,         Color.WHITE, Color.YELLOW };     JFrame frame = new JFrame("Color JComboBox");     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     final JComboBox comboBox = new JComboBox(colors);     comboBox.setMaximumRowCount(5);     comboBox.setEditable(true);     comboBox.setRenderer(new ColorCellRenderer());     frame.add(comboBox, BorderLayout.NORTH);     final JLabel label = new JLabel();     label.setOpaque(true);     label.setBackground((Color) comboBox.getSelectedItem());     frame.add(label, BorderLayout.CENTER);     ActionListener actionListener = new ActionListener() {       public void actionPerformed(ActionEvent actionEvent) {         Color selectedColor = (Color) comboBox.getSelectedItem();         label.setBackground(selectedColor);       }     };     comboBox.addActionListener(actionListener);     frame.setSize(300, 200);     frame.setVisible(true);   } } class ColorCellRenderer implements ListCellRenderer {   protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();   private final static Dimension preferredSize = new Dimension(0, 20);   public Component getListCellRendererComponent(JList list, Object value, int index,       boolean isSelected, boolean cellHasFocus) {     JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index,         isSelected, cellHasFocus);     if (value instanceof Color) {       renderer.setBackground((Color) value);     }     renderer.setPreferredSize(preferredSize);     return renderer;   } }