Java 如何为JComboBox中的项目分配不同的颜色?

Java 如何为JComboBox中的项目分配不同的颜色?,java,swing,Java,Swing,我有一个JComboBox,其中添加了10个字符串项。 我想为每个项目分配不同的颜色。 我怎样才能做到这一点? 请提供帮助。您必须使用自定义列表单元格渲染器。查看一个例子。您必须实现一个新的,将由您的组合框使用,通过,来正确渲染对象 您可以进行扩展以避免重新编码所有内容。Chandru回答中的示例看起来像很多代码,因此我可以理解您为什么要求更简单的解决方案。但是,如果您将DefaultListCellRenderer子类化,则会为您完成大量工作,因为此渲染器是JLabel的子类 JList li

我有一个JComboBox,其中添加了10个字符串项。 我想为每个项目分配不同的颜色。 我怎样才能做到这一点?
请提供帮助。

您必须使用自定义列表单元格渲染器。查看一个例子。

您必须实现一个新的,将由您的组合框使用,通过,来正确渲染对象


您可以进行扩展以避免重新编码所有内容。

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(),但它不起作用。我不知道为什么。你在渲染器组件中设置了前景吗?如果你愿意,你可以向上投票这个答案(和其他一些答案)。