У меня есть JComboBox, где почти все было изменено относительно макета. Я изменил цвет выделения во всплывающем окне, кнопке со стрелкой, цвета фона и т. Д. Последняя оставшаяся часть, которую я не получаю, чтобы посмотреть, как я ее хочу, - это цвет рамки всплывающего окна (внутренний JList).Изменить цвет рамки внутреннего всплывающего окна (JList) JComboBox
Мой выпадающий выглядит следующим образом:
Как вы можете видеть, он имеет черную кайму, которая не соответствия на весь макет. Я хочу изменить это на синий цвет, который вы видите на границе выше.
Я провел некоторое исследование, но никакое решение не работало для меня. Ближайшим решением было post. Но это не сработало.
Наряду с изменением цвета seleciton, я уже пытался изменить цвет границы следующим образом:
public static void setSelectionColorOfComboBox(JComboBox<String> comboBox)
{
Object child = comboBox.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup) child;
JList list = popup.getList();
list.setBorder(new LineBorder(ColorPalette.LIGHT_BLUE, 1));
list.setSelectionBackground(ColorPalette.LIGHT_BLUE);
list.setSelectionForeground(Color.WHITE);
list.setFocusable(false);
}
Чтобы убедиться, что ничего не пропустить, я создал отдельный метод, чтобы изменить эту границу, в соответствии с связанным постом сверху:
public static void setBorderColorOfComboBoxPopup(JComboBox<String> comboBox)
{
Object child = comboBox.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup) child;
JList list = popup.getList();
list.setBorder(new LineBorder(ColorPalette.LIGHT_BLUE));
}
Но это тоже не сработало. Кто-нибудь знает, почему эти общие способы не работают для меня, или кто-то хотя бы знает другой подход к изменению цвета границы, поэтому я могу попробовать что-то другое?
В настоящее время я думаю о том, что есть что-то вроде панели прокрутки вокруг JList, и я сделаю некоторое исследование о том, могу ли я получить доступ к нему и установить его границу, если это возможно.
Да, спасибо. Пару минут назад я тоже пришел к этому решению. :) Я по-прежнему буду отмечать это как лучший ответ. – KJaeg