Цвет фона выбранного элемента в недоступном для редактирования JComboBox - PullRequest
6 голосов
/ 10 декабря 2010

Цвет фона выбранного элемента в недоступном для редактирования JComboBox - синий:

alt text

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

Ответы [ 3 ]

9 голосов
/ 10 декабря 2010

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

jComboBox1.setRenderer(new DefaultListCellRenderer() {
    @Override
    public void paint(Graphics g) {
        setBackground(Color.WHITE);
        setForeground(Color.BLACK);
        super.paint(g);
    }
});
6 голосов
/ 10 декабря 2010

Фон, назначенный средством визуализации, переопределяется цветом фона выбора 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);

Это также повлияет на отображение всплывающего окна. Если вы не хотите, чтобы это влияло на всплывающее окно, вам нужно будет создать пользовательский рендер, чтобы специально установить фон для выбранных элементов.

3 голосов
/ 10 декабря 2010

Вы пытались написать свой собственный, ListCellRenderer?

Когда этот метод запрашивается для предоставления компонента рендеринга ячейки, вы получаете следующие аргументы:

 public Component getListCellRendererComponent(JList list,
                                               Object value,
                                               int index,
                                               boolean isSelected,
                                               boolean cellHasFocus) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...