#java #swing #jcombobox
#java #качели #jcombobox
Вопрос:
Я хотел бы изменить цвет выбранного combobox. Я не знаю названия этого события. Это не фон или передний план, и что тогда? Подробнее об Изображении:
Ответ №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. Спасибо за ваш ответ. У меня есть свой собственный рендеринг, но я не знаю, как поступить с первой (выбранной) строкой.