不可编辑的JComboBox中所选项目的背景颜色

不可编辑的JComboBox中所选项目的背景颜色是一种蓝色:

替代文字

有没有办法让它变成不同的颜色,例如白色?

这应该工作

jComboBox1.setRenderer(new DefaultListCellRenderer() { @Override public void paint(Graphics g) { setBackground(Color.WHITE); setForeground(Color.BLACK); super.paint(g); } }); 

渲染器分配的背景将被combobox弹出窗口中使用的JList的选择背景颜色覆盖。 查看BasicComboBoxUI类的“paintCurrentValue”方法。 所以解决方法是:

 JComboBox comboBox = new JComboBox(...); Object child = comboBox.getAccessibleContext().getAccessibleChild(0); BasicComboPopup popup = (BasicComboPopup)child; JList list = popup.getList(); list.setSelectionBackground(Color.RED); 

这也会影响弹出窗口的渲染。 如果您不希望它影响弹出窗口,则需要创建自定义渲染器以专门设置所选项目的背景。

您是否尝试过编写自己的自定义ListCellRenderer

当要求该方法提供单元格渲染组件时,您将获得以下参数:

  public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {