import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CustomComboBoxDemo extends JPanel { ImageIcon images[]; public CustomComboBoxDemo() { //Load the pet images String[] petStrings = {"Bird", "Cat", "Dog", "Rabbit", "Pig"}; images = new ImageIcon[petStrings.length]; for (int i = 0; i < petStrings.length; i++) { images[i] = new ImageIcon("images/" + petStrings[i] + ".gif"); images[i].setDescription(petStrings[i]); } // Create the combo box JComboBox petList = new JComboBox(images); ComboBoxRenderer renderer= new ComboBoxRenderer(); renderer.setPreferredSize(new Dimension(200, 130)); petList.setRenderer(renderer); petList.setMaximumRowCount(3); // Layout the demo setLayout(new BorderLayout()); add(petList, BorderLayout.NORTH); setBorder(BorderFactory.createEmptyBorder(20,20,20,20)); } public static void main(String s[]) { JFrame frame = new JFrame("CustomComboBoxDemo"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); frame.getContentPane().add(new CustomComboBoxDemo(), BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } class ComboBoxRenderer extends JLabel implements ListCellRenderer { public ComboBoxRenderer() { setOpaque(true); setHorizontalAlignment(CENTER); setVerticalAlignment(CENTER); } public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } ImageIcon icon = (ImageIcon)value; setText(icon.getDescription()); setIcon(icon); return this; } } }