import javax.swing.*; import java.awt.Color; // import java.awt.Dimension; import java.awt.BorderLayout; import java.awt.Component; import java.awt.image.BufferedImage; public class JComboBoxTest18 extends JFrame{ /** * */ private static final long serialVersionUID = 7870501353097900879L; private BufferedImage iconImage = new BufferedImage(20, 20, BufferedImage.TYPE_INT_BGR); private ImageIcon icon; public static void main(String[] args){ JComboBoxTest18 frame = new JComboBoxTest18(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("タイトル"); frame.setVisible(true); } JComboBoxTest18(){ DefaultComboBoxModel model = new DefaultComboBoxModel(); for (int y = 0; y < 20; y++) { for (int x = 0; x < 20; x++) { iconImage.setRGB(x, y, 255); } } icon = new ImageIcon(iconImage); model.addElement(new ComboLabel("test1", icon)); model.addElement(new ComboLabel("test2", icon)); /* model.addElement(new ComboLabel("Lion", new ImageIcon("./img/reo1s.png"))); model.addElement(new ComboLabel("Elephant", new ImageIcon("./img/zou1s.png"))); model.addElement(new ComboLabel("Ostrich", new ImageIcon("./img/dacho_s.png"))); model.addElement(new ComboLabel("Hippo", new ImageIcon("./img/hip03s.png"))); */ JComboBox combo = new JComboBox(model); MyCellRenderer renderer = new MyCellRenderer(); combo.setRenderer(renderer); JPanel p = new JPanel(); p.add(combo); getContentPane().add(p, BorderLayout.CENTER); } class ComboLabel{ String text; Icon icon; ComboLabel(String text, Icon icon){ this.text = text; this.icon = icon; } public String getText(){ return text; } public Icon getIcon(){ return icon; } } class MyCellRenderer extends JLabel implements ListCellRenderer{ /** * */ private static final long serialVersionUID = 8321430207533611819L; MyCellRenderer(){ setOpaque(true); } public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){ ComboLabel data = (ComboLabel)value; setText(data.getText()); setIcon(data.getIcon()); if (isSelected){ setForeground(Color.white); setBackground(Color.black); }else{ setForeground(Color.black); setBackground(Color.white); } return this; } } }