Я использую пользовательский BasicComboBoxRenderer для JComboBox и изменил внешний вид элементов раскрывающегося списка. Однако эти изменения также относятся к одному верхнему элементу, который отображается в поле со списком (не знаю, как его назвать).
Я хочу, чтобы верхний элемент не зависел от других элементов в списке, если это возможно. Я также хотел бы избавиться от синего цвета верхнего элемента, когда он сфокусирован (setFocusable(false) - это не то, что мне нужно).
Я пытался использовать «индекс рендерера» (-1), чтобы воздействовать на верхний элемент, но, похоже, это не помогает.
Любые идеи?
P.S. К сожалению, я не смог добавить изображения, чтобы было понятнее (нет репутации).
РЕДАКТИРОВАТЬ: Когда я говорю, что хочу, чтобы верхний элемент был независим от всех остальных элементов раскрывающегося списка, я имею в виду, что он всегда будет отличаться от остальных. Например, в моем пользовательском BasicComboBoxRenderer я установил для выбранного элемента другой фон, но этот фон также применяется к верхнему элементу (поскольку выбранный элемент становится верхним элементом списка).
РЕДАКТИРОВАТЬ 2: верхний элемент = Я имел в виду область отображения поля со списком, поэтому я хочу повлиять на элемент, отображаемый в области отображения, а не на первый элемент в раскрывающемся списке. Мне удалось сделать это, используя setBackground в самом поле со списком И setFocusable(false) (что не очень полезно, потому что я хочу сохранить механизм фокуса). Но проблема (за исключением проблемы с фокусом) заключается в том, что если, например, я устанавливаю границу для каждого элемента в списке с помощью пользовательского класса BasicComboBoxRenderer или ListCellRenderer, эта же граница появляется для элемента, отображаемого в области отображения. Так вот тут 2 вопроса:
-- Есть ли способ различать расположение элементов в раскрывающемся списке и один элемент в области отображения?
-- Есть ли способ отключить цвет фокуса поля со списком, не отключая механизм фокуса, как когда мы используем setFocusPainted(false) для кнопок? (Я также пытался добавить собственный FocusListener в поле со списком, но любое изменение фона с помощью focusGained() влияет только на кнопку, а не на элемент, отображаемый в области отображения).
Извините за сумбур и многократные правки...