Получение явно установленного цвета переднего плана для JButton

StackOverflow https://stackoverflow.com/questions/2371767

Вопрос

У меня есть собственный класс 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;или добавьте новый метод, который возвращает это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top