Java 如何为JComboBox中的项目分配不同的颜色?
我有一个JComboBox,其中添加了10个字符串项。 我想为每个项目分配不同的颜色。 我怎样才能做到这一点?Java 如何为JComboBox中的项目分配不同的颜色?,java,swing,Java,Swing,我有一个JComboBox,其中添加了10个字符串项。 我想为每个项目分配不同的颜色。 我怎样才能做到这一点? 请提供帮助。您必须使用自定义列表单元格渲染器。查看一个例子。您必须实现一个新的,将由您的组合框使用,通过,来正确渲染对象 您可以进行扩展以避免重新编码所有内容。Chandru回答中的示例看起来像很多代码,因此我可以理解您为什么要求更简单的解决方案。但是,如果您将DefaultListCellRenderer子类化,则会为您完成大量工作,因为此渲染器是JLabel的子类 JList li
请提供帮助。您必须使用自定义列表单元格渲染器。查看一个例子。您必须实现一个新的,将由您的组合框使用,通过,来正确渲染对象
您可以进行扩展以避免重新编码所有内容。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;
}
});
谢谢你的回复。但是有更简单的方法吗?我在每个addItem()之后都尝试了setForeground(),但它不起作用。我不知道为什么。你在渲染器组件中设置了前景吗?如果你愿意,你可以向上投票这个答案(和其他一些答案)。