我有一个JComboBox并且在其中添加了10个字符串项。 我想为每个项目分配不同的颜色。 我怎么能做到这一点? 请帮忙。
答案 0 :(得分:4)
Chandru的答案中的示例看起来像很多代码,所以我可以理解为什么要求更简单的解决方案。但是,如果您继承 DefaultListCellRenderer
,则会为您完成大量工作,因为此渲染器是JLabel
的子类。
JList list = ... // Create JList
// Install custom renderer.
list.setCellRenderer(new DefaultListCellRenderer() {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
// Request superclass to render the JLabel.
Component ret = super.getListCellRenderer(list, value, index, isSelected, cellHasFocus);
// Now conditionally override background if cell isn't selected.
if (!isSelected) {
String s = String.valueOf(value);
if (s.equals("Foo")) {
ret.setBackground(Color.RED);
} else {
ret.setBackground(Color.GREEN);
}
}
return ret;
}
});
答案 1 :(得分:1)
您必须使用自定义列表单元格渲染器。查看this how-to的示例。
答案 2 :(得分:1)
您必须实施一个新的ListCellRenderer,您的组合框将通过setRenderer使用它来正确渲染您的对象。
您可以延长BasicComboBoxRenderer以避免重新调整所有内容。