我有一个自定义的ButtonUI类,用于绘制按钮。在绘制文本之前,paint方法检查按钮是否已设置自定义颜色,以便使用该颜色代替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()方法。

10-07 12:05