В Swing есть ли свойство, чтобы установить JList отключенный цвет переднего плана?
Вопрос
В Swing есть ли свойство, чтобы установить JList отключенный цвет переднего плана?
Я использую строитель GUI NetBeans и хочу добавить свойство в файл свойств ресурса, который устанавливает цвет текста в JLIST другому дефолту при отключении JLIST. Используя Nimbus LAF, для этого существует другой цвет, потому что текст серого, когда отключен, но черный при включении. Я просто не хочу, чтобы он был серым при отключении.
Стандартный цвет переднего плана просто.
Спасибо.
Решение
А DefaultListCellRenderer
расширяется JLabel
. Анкет В его getListRendererComponent
метод, он устанавливает свое включенное состояние на основе состояния JList
это передается.
Код для рисования отключен JLabel
текст в BasicLabelUI
Некоторые работают, чтобы нарисовать текст с эффектом тени. Во многих подклассах вы найдете код, который ищет "Label.disabledForeground"
Собственность пользовательского интерфейса. Нимбус по умолчанию кажется, ищет "Label.disabledText"
.
У вас есть пара вариантов:
- Вы можете установить
"Label.disabledText"
собственность вUIManager
, что сделает всеJLabel
экземпляры и подклассы которые отключены, чтобы взять на себя эту окраску. - Вы можете создать пользовательский рендерер для вашего
JList
который проверяет включенное состояниеJList
А затем выполняет любой пользовательский код, который вы хотели бы, - или полностью опустите тест с включенным состоянием, если вы хотите, чтобы он выглядел одинаково независимо от его включенного состояния.
Я бы посоветовал вам использовать подход на заказ, так как трудно сказать, где изменение JLabel
Собственность будет отображаться, так как этот класс используется в качестве сборочного блока во многих различных компонентах.
Другие советы
Если есть свойство для установки, то Uimanager по умолчанию Программа должна показать вам собственность, чтобы измениться. Я не вижу свойства для металла или Windows LAF, так что это может указывать на то, что это контролируется непосредственно в коде пользовательского интерфейса.