1

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

4

2 回答 2

2

在中Component你可以找到isBackgroundSet()方法。

于 2010-03-03T15:14:05.797 回答
0

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

于 2010-03-03T15:16:30.093 回答