获取JButton的显式设置前景色

时间:2010-03-03 13:49:30

标签: java swing look-and-feel jbutton

我有一个绘制按钮的自定义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可能是一个解决方案,但我认为必须有一个更简单的方法。

2 个答案:

答案 0 :(得分:2)

<{1>}在Component您可以找到isBackgroundSet()方法。

答案 1 :(得分:0)

重写方法并让它返回this.foreground;或添加一个返回该方法的新方法。