private class ColorIcon implements Icon { private Color m_color;
public ColorIcon(Color color) { m_color = color; }
public int getIconWidth() { return 20; }
public int getIconHeight() { return 10; }
public void paintIcon(Component c, Graphics g, int x, int y) { int width = getIconWidth(); int height = getIconHeight(); g.setColor(m_color); g.fillRect(x, y, width, height); } } }
能把ColorComboBoxModel的代码贴出来看看吗?非常感谢啊
刚才漏掉了 class ColorComboBoxModel extends DefaultComboBoxModel {
MyComboBox colorcombobox=new MyComboBox(m_colormodel);
colorcombobox.setRenderer(new ColorComboBoxRenderer());
colorcombobox.setMaximumRowCount(4);
colorcombobox.addActionListener(listener1);class MyComboBox extends JComboBox {
public MyComboBox(ComboBoxModel model) {
super(model);
}
public Object getSelectedColorItem() {
return ((ColorComboBoxModel)getModel()).getSelectedColorItem();
}
}class ColorComboBoxRenderer extends DefaultListCellRenderer {
public ColorComboBoxRenderer() {
setOpaque(true);
}
public Component getListCellRendererComponent(
JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
String strValue = (String)value;
Object[][] objs =
(Object[][])
((ColorComboBoxModel)list.getModel()).getSrcData();
Color color = Color.BLACK;
if(strValue != null) {
for(int i = 0; i < objs.length; i++) {
if(objs[i][0].equals(strValue)) {
color = (Color)objs[i][1];
}
}
}
Icon icon = new ColorIcon(color);
setIcon(icon);
setText(strValue);
setBackground(isSelected ? list.getSelectionBackground():
list.getBackground());
setForeground(isSelected ? list.getSelectionForeground():
list.getForeground());
return this;
// super.getListCellRendererComponent(list, value,
// index, isSelected, cellHasFocus);
}
private class ColorIcon implements Icon {
private Color m_color;
public ColorIcon(Color color) {
m_color = color;
}
public int getIconWidth() {
return 20;
}
public int getIconHeight() {
return 10;
}
public void paintIcon(Component c, Graphics g,
int x, int y) {
int width = getIconWidth();
int height = getIconHeight();
g.setColor(m_color);
g.fillRect(x, y, width, height);
}
}
}
class ColorComboBoxModel extends DefaultComboBoxModel {
Object[][] m_colorTable;
public ColorComboBoxModel() {
m_colorTable = new Object[][] {
{"Black", Color.BLACK},
{"Blue", Color.BLUE},
{"Cyan", Color.CYAN},
{"Dark Gray", Color.DARK_GRAY},
{"Gray", Color.GRAY},
{"Green", Color.GREEN},
{"Light Gray", Color.LIGHT_GRAY},
};
}
public Object getSrcData() {
return m_colorTable;
}
public int getSize() {
return m_colorTable.length;
}
public Object getElementAt(int index) {
return m_colorTable[index][0];
}
public Object getElementColorAt(int index) {
return m_colorTable[index][1];
}
public Object getSelectedColorItem() {
Object obj = super.getSelectedItem();
String str = obj.toString();
java.util.List list = Arrays.asList(m_colorTable);
Object[] objs = null;
for(int i = 0; i < list.size(); i++) {
objs = (Object[])list.get(i);
if(objs[0].equals(str))
return objs[1];
}
return null;
}
}