Есть ли в Swing свойство устанавливать цвет переднего плана с отключенным JList? - PullRequest
2 голосов
/ 17 февраля 2010

В Swing, есть ли свойство для установки цвета переднего плана, отключенного JList?

Я использую конструктор графического интерфейса Netbeans и хочу добавить свойство в файл свойств ресурса, который задает цветтекст в JList с другим значением по умолчанию, когда JList отключен.Используя Nimbus LAF, для этого есть другой цвет, потому что текст серый, когда отключен, и черный, когда включен.Я просто не хочу, чтобы он был серым при отключении.

Стандартный цвет переднего плана - просто .foreground.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 17 февраля 2010

DefaultListCellRenderer расширяется JLabel. В своем методе getListRendererComponent он устанавливает свое включенное состояние на основе того, что передано в JList.

Код для рисования отключен. JLabel Текст в BasicLabelUI выполняет некоторую работу по рисованию текста с эффектом тени. Во многих подклассах вы найдете код, который ищет свойство "Label.disabledForeground" UI. По умолчанию Nimbus , кажется, ищет "Label.disabledText".

У вас есть пара вариантов:

  1. Вы можете установить свойство "Label.disabledText" в UIManager, которое сделает все JLabel экземпляры и подклассы , которые отключены, для этой окраски.
  2. Вы можете создать пользовательский рендерер для JList, который проверяет включенное состояние JList, а затем выполняет любой пользовательский код, который вы хотите - или полностью пропустите тест включенного состояния, если хотите, чтобы он выглядел одинаково независимо от его включенного состояния.

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

1 голос
/ 17 февраля 2010

Если есть свойство для установки, то программа UIManager Defaults должна показать вам свойство для изменения. Я не вижу свойства для Metal или Windows LAF, поэтому оно может указывать на то, что оно контролируется непосредственно в коде пользовательского интерфейса.

...