Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不可编辑JComboBox中所选项目的背景色_Java_Swing_Jcombobox - Fatal编程技术网

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

Java 不可编辑JComboBox中所选项目的背景色,java,swing,jcombobox,Java,Swing,Jcombobox,不可编辑JComboBox中所选项目的背景颜色为蓝色: 有没有办法让它变成不同的颜色,例如白色?您是否尝试过编写自己的自定义的ListCellRenderer 当要求该方法提供单元渲染组件时,您将获得以下参数: public Component getListCellRendererComponent(JList list, Object value,

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


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

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

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

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

渲染器指定的背景由组合框弹出窗口中使用的JList的选择背景色覆盖。查看BasicComboxUI类的“paintCurrentValue”方法。因此,解决办法是:

JComboBox comboBox = new JComboBox(...);
Object child = comboBox.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup)child;
JList list = popup.getList();
list.setSelectionBackground(Color.RED);
这也会影响弹出窗口的呈现。如果不想影响弹出窗口,则需要创建自定义渲染器,专门设置选定项目的背景。

这应该可以

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

使用提供的代码aioob,将值强制转换为JLabel,并将其背景设置为您想要的颜色。是的,我尝试过。这可以更改菜单项在下拉框中显示时的外观。但是,它不会更改所选项目的外观。这仅适用于不需要重写CellRenderer的GetListCellRenderComponent方法的情况。如果必须这样做,请使用setSelectionBackground,如camickr的回答中所示。相关,可能重复,无法决定: