DefaultListCellRenderer
расширяется JLabel
. В своем методе getListRendererComponent
он устанавливает свое включенное состояние на основе того, что передано в JList
.
Код для рисования отключен. JLabel
Текст в BasicLabelUI
выполняет некоторую работу по рисованию текста с эффектом тени. Во многих подклассах вы найдете код, который ищет свойство "Label.disabledForeground"
UI. По умолчанию Nimbus , кажется, ищет "Label.disabledText"
.
У вас есть пара вариантов:
- Вы можете установить свойство
"Label.disabledText"
в UIManager
, которое сделает все JLabel
экземпляры и подклассы , которые отключены, для этой окраски.
- Вы можете создать пользовательский рендерер для
JList
, который проверяет включенное состояние JList
, а затем выполняет любой пользовательский код, который вы хотите - или полностью пропустите тест включенного состояния, если хотите, чтобы он выглядел одинаково независимо от его включенного состояния.
Я бы посоветовал использовать пользовательский подход к визуализации, поскольку трудно сказать, где будет отображаться изменение свойства JLabel
, поскольку этот класс используется в качестве строительного блока во многих различных компонентах.