1

ボタンを描画するカスタム 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 を配置することは解決策かもしれませんが、もっと簡単な方法があるに違いないと思います。

4

2 に答える 2

2

でメソッドComponentを見つけることができますisBackgroundSet()

于 2010-03-03T15:14:05.797 に答える
0

メソッドをオーバーライドして、this.foreground; を返すようにします。またはそれを返す新しいメソッドを追加します。

于 2010-03-03T15:16:30.093 に答える