Получение явно заданного цвета переднего плана для JButton - PullRequest
1 голос
/ 03 марта 2010

У меня есть собственный класс 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 на кнопку может быть решением, но я почему-то думаю, что должен быть более простой способ.

Ответы [ 2 ]

2 голосов
/ 03 марта 2010

в Component вы можете найти метод isBackgroundSet().

0 голосов
/ 03 марта 2010

Переопределите метод и сделайте так, чтобы он возвращал this.foreground; или добавьте новый метод, который возвращает это.

...