Получение явно установленного цвета переднего плана для JButton
-
24-09-2019 - |
Вопрос
У меня есть собственный класс ButtonUI, который рисует кнопку.Перед рисованием текста метод рисования проверяет, установлен ли для кнопки собственный цвет, чтобы использовать его вместо UIDefaults#get("Button.foreground").
if ((b.getForeground() != null)) {
colText = b.getForeground();
}
Просмотр класса java.awt.Component приводит к проблеме:
public Color getForeground() {
Color foreground = this.foreground;
if (foreground != null) {
return foreground;
}
Container parent = this.parent;
return (parent != null) ? parent.getForeground() : null;
}
Таким образом, проверка getForeground() кнопки на значение null не очень помогает, поскольку она возвращает цвет переднего плана для компонента, на котором расположена кнопка.
Вопрос:Как проверить, был ли для кнопки явно установлен собственный цвет переднего плана?
Решением может быть установка PropertyChangedListener на кнопку, но я почему-то думаю, что должен быть более простой способ.
Решение
в Component
вы можете найти isBackgroundSet()
метод.
Другие советы
Переопределить метод и вернуть this.foreground;или добавьте новый метод, который возвращает это.