不可编辑的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) {