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

时间:2010-02-09 12:57:33

标签: java swing

我有一个JComboBox并且在其中添加了10个字符串项。 我想为每个项目分配不同的颜色。 我怎么能做到这一点? 请帮忙。

3 个答案:

答案 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以避免重新调整所有内容。