モジュール java.desktop
パッケージ javax.swing.plaf.nimbus

クラスNimbusStyle

java.lang.Object
javax.swing.plaf.synth.SynthStyle
javax.swing.plaf.nimbus.NimbusStyle

public final class NimbusStyle extends SynthStyle

Nimbusによって使用されるSynthStyle実装。 NimbusLookAndFeelに登録されている各Regionは、関連付けられたNimbusStyleを持ちます。 そのため、NimbusLookAndFeelに登録されたサード・パーティ・コンポーネントには、#getStyle(JComponent, Region)メソッドによりLook & FeelからNimbusStyleが渡されます。

このクラスは、標準のNimbus命名規約に従ってUIDefaultsに配置されている値を適切に読み取り、取得します。 また、そこに格納されるペインタ、フォント、色、およびその他のデータを作成および取得します。

NimbusStyleは、設定をコンポーネントごとにオーバーライドする機能もサポートします。 NimbusStyleは、コンポーネントのクライアント・プロパティのマップに「Nimbus.Overrides」があるかどうかチェックします。 このキーに関連付けられた値がUIDefaultsのインスタンスの場合、そのデフォルト・テーブルの値がUIManagerにある標準のNimbusのデフォルトをオーバーライドしますが、そのコンポーネントのインスタンスのみを対象とします。

オプションとして、クライアント・プロパティ「Nimbus.Overrides.InheritDefaults」を指定できます。 このクライアント・プロパティがtrueの場合、UIManagerにあるデフォルトが最初に読み込まれ、次にコンポーネントのクライアント・プロパティにあるデフォルトに置き換えられるべきであることを示します。 falseの場合、コンポーネントのクライアント・プロパティ・マップにあるデフォルトのみが使用されます。 指定されていない場合、trueであるとみなされます。

「Nimbus.Overrides.InheritDefaults」の効果が生じるように「Nimbus.Overrides」を指定する必要があります。 「Nimbus.Overrides」はオーバーライドがあるかどうかを示し、「Nimbus.Overrides.InheritDefaults」は、それらのオーバーライドが最初にUIManagerのデフォルトで初期化されるべきかどうかを示します。

NimbusStyleは、「Nimbus.Overrides」または「Nimbus.Overrides.InheritDefaults」のコンポーネントのプロパティ変更イベントがトリガーされるたびに再ロードされます。 このため、たとえば新しいUIDefaultsをコンポーネントに設定すると、スタイルが再ロードされます。

値はUIManagerから一度読み込まれるだけで、その後はキャッシュされます。 値を再度読み取る必要がある場合(たとえばUIが再ロードされる場合)、このNimbusStyleを破棄し、NimbusLookAndFeel.getStyleを使用してNimbusLookAndFeelから新しい値を読み取ります。

サード・パーティ・コンポーネントの作成者の場合、このクラスで主に対象となるAPIは、ペインタを取得する3つのメソッド(#getBackgroundPainter、#getForegroundPainter、#getBorderPainter)です。

NimbusStyleにより、カスタム状態の指定や状態の順序の変更ができます。 Synthには(したがってNimbusにも)「状態」の概念があります。 たとえば、JButtonの状態は「MOUSE_OVER」、「ENABLED」、または「DISABLED」になる可能性があります。 これらはすべて、Synthに定義され、すべてのSynth Regionに適用される「標準」状態です。

ただし、カスタム状態が必要な場合もあります。 たとえば、JButtonの親がJToolbarのときに、このJButtonを異なるように描画する場合があります。 Nimbusでは、これらのカスタム状態を、UIDefaultsに特別なキーを含めることで指定します。 次のUIDefaultsエントリでは、このボタンの3つの状態を定義します。


     JButton.States = Enabled, Disabled, Toolbar
     JButton[Enabled].backgroundPainter = somePainter
     JButton[Disabled].background = BLUE
     JButton[Toolbar].backgroundPainter = someOtherPaint
 

見てわかるように、JButton.StatesエントリはJButtonスタイルがサポートする状態をリストします。 次に、各状態の設定を指定します。 JButton.Statesエントリを指定しない場合、標準のSynth状態が使用されます。 このエントリを指定しても、状態のリストが空またはnullの場合、標準のSynth状態が使用されます。