import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.util.Hashtable;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
class Main extends JFrame {
Hashtable<Integer, Color> table;
JComboBox<String> c;
public Main() {
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
table = new Hashtable<Integer, Color>();
table.put(1, Color.RED);
table.put(2, Color.BLUE);
table.put(3, Color.GREEN);
table.put(4, Color.GRAY);
c = new JComboBox<String>();
c.addItem("Item 1");
c.addItem("Item 2");
c.addItem("Item 3");
c.addItem("Item 4");
c.addItem("Item 5");
c.addItem("Item 6");
c.addItem("Item 7");
c.addItem("Item 8");
c.setRenderer(new MyListCellRenderer(table));
add(c);
setSize(400, 400);
setVisible(true);
}
public static void main(String args[]) {
new Main();
}
}
class MyListCellRenderer extends DefaultListCellRenderer {
Hashtable<Integer, Color> table;
public MyListCellRenderer(Hashtable<Integer, Color> table) {
this.table = table;
setOpaque(true);
}
public Component getListCellRendererComponent(JList jc, Object val, int idx,
boolean isSelected, boolean cellHasFocus) {
setText(val.toString());
setForeground(table.get(idx));
if (isSelected)
setBackground(Color.LIGHT_GRAY);
else
setBackground(Color.WHITE);
return this;
}
}