Как изменить цвета JComboBox?

#java #swing #jcombobox

#java #качели #jcombobox

Вопрос:

Я хотел бы изменить цвет выбранного combobox. Я не знаю названия этого события. Это не фон или передний план, и что тогда? Подробнее об Изображении:

http://i.stack.imgur.com/hNIM3.png

Ответ №1:

Средство визуализации работает для элементов в раскрывающемся списке.

Тот же самый средство визуализации также используется для отображения значения, отображаемого в поле со списком, когда значение индекса равно -1. Однако цвет фона контролируется пользовательским интерфейсом, поэтому вы не можете просто переопределить его. Это и есть тот самый

 UIManager.getColor("ComboBox.selectionBackground");
 

свойство используется для управления фоном, поэтому у вас есть согласованный LAF, который указывает, когда поле со списком имеет фокус. Я не знаю ни одного простого способа контролировать это поведение. Вам нужно будет написать пользовательский интерфейс, который устанавливает фон на основе выбранного значения.

Комментарии:

1. Я знаю, что это не работает, я указал это в своем ответе. Цвет фона средства визуализации игнорируется, а используется фон из UIManager, поэтому вам нужен пользовательский интерфейс.

2. @user3784463 Если вы используете nimbus, ключ пользовательского интерфейса может отличаться

Ответ №2:

Вам нужно будет написать новый рендерер для поля со списком. Здесь есть несколько хороших примеров: http://www.java2s.com/Code/Java/Swing-JFC/AfancyexampleofJComboBoxwithacustomrendererandeditor.htm

В частности, вы будете писать новый рендеринг ячеек. Для этого есть хороший учебник: http://www.java2s.com/Tutorial/Java/0240__Swing/Comboboxcellrenderer.htm

Надеюсь, это поможет.

Грег

Комментарии:

1. Спасибо за ваш ответ. У меня есть свой собственный рендеринг, но я не знаю, как поступить с первой (выбранной) строкой.