Цвет фона выбранного элемента в нередактируемом jcombobox в

цвет фона выбранного элемента в нередактируемом jcombobox в своего рода синий:

alt text

есть ли способ сделать это другим цветом, например, белым?

3 ответов


Это должно работать

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

фон, назначенный визуализатором, переопределяется цветом фона выбора JList, который используется во всплывающем окне для поля со списком. Проверьте метод "paintCurrentValue" класса BasicComboBoxUI. Таким образом, обходной путь будет:

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) {