モジュール java.desktop
パッケージ 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状態が使用されます。

    • メソッドの詳細

      • installDefaults

        public void installDefaults​(SynthContext ctx)
        このStyleから必要な状態をcontextJComponentにインストールします。 必要に応じて、このスタイル自体にUIDefaultsからのデータが移入されるようにオーバーライドされます。
        オーバーライド:
        installDefaults、クラス: SynthStyle
        パラメータ:
        ctx - プロパティがインストールされるコンポーネントを識別するSynthContext。
      • getInsets

        public Insets getInsets​(SynthContext ctx,
                                Insets in)
        サイズ変更情報の計算に使用されるInsetsを返します。 必要に応じて、このスタイル自体にUIDefaultsからのデータが移入されるようにオーバーライドされます。
        オーバーライド:
        getInsets、クラス: SynthStyle
        パラメータ:
        ctx - 要求元を識別するSynthContext
        in - 戻り値を入れるInsets。
        戻り値:
        サイズ変更のInsets。
      • getColorForState

        protected Color getColorForState​(SynthContext ctx,
                                         ColorType type)
        指定された状態の色を返します。 これは、JComponentに対するメソッドを一切呼び出すべきではありません。

        必要に応じて、このスタイル自体にUIDefaultsからのデータが移入されるようにオーバーライドされます。

        さらに、NimbusStyleによるColorTypesの処理はSynthと多少異なります。

        • ColorType.BACKGROUNDは、「background」という名前のUIDefaultsに格納された色と一致します。
        • ColorType.TEXT_BACKGROUNDは、「textBackground」という名前のUIDefaultsに格納された色と一致します。
        • ColorType.FOREGROUNDは、「textForeground」という名前のUIDefaultsに格納された色と一致します。
        • ColorType.TEXT_FOREGROUNDは、「textForeground」という名前のUIDefaultsに格納された色と一致します。
        定義:
        getColorForState、クラス: SynthStyle
        パラメータ:
        ctx - 要求元を識別するSynthContext
        type - 要求される色のタイプ。
        戻り値:
        描画に使用されるColor
      • getFontForState

        protected Font getFontForState​(SynthContext ctx)
        指定された状態のフォントを返します。 これは、JComponentに対するメソッドを一切呼び出すべきではありません。 必要に応じて、このスタイル自体にUIDefaultsからのデータが移入されるようにオーバーライドされます。 UIDefaultsに「font」という名前の値が見つからない場合は、代わりに、UIDefaultsの「defaultFont」フォントが返されます。
        定義:
        getFontForState、クラス: SynthStyle
        パラメータ:
        ctx - 要求元を識別するSynthContext
        戻り値:
        描画に使用されるFont
      • getPainter

        public SynthPainter getPainter​(SynthContext ctx)
        ペイントに使用されるSynthPainterを返します。 nullを返すこともあります。 最終的に、このスタイルでインストールされたPaintersに委譲する、このスタイルのSynthPainterが返されます。
        オーバーライド:
        getPainter、クラス: SynthStyle
        パラメータ:
        ctx - 要求元を識別するSynthContext
        戻り値:
        使用されるSynthPainter
      • isOpaque

        public boolean isOpaque​(SynthContext ctx)
        領域が不透明な場合にtrueを返します。 必要に応じて、このスタイル自体にUIDefaultsからのデータが移入されるようにオーバーライドされます。 UIのデフォルトに不透明度が指定されていない場合は、デフォルトで不透明でなくなります。
        オーバーライド:
        isOpaque、クラス: SynthStyle
        パラメータ:
        ctx - 要求元を識別するSynthContext
        戻り値:
        領域が不透明な場合はtrue。
      • get

        public Object get​(SynthContext ctx,
                          Object key)
        領域固有のスタイル・プロパティを取得します。

        必要に応じて、このスタイル自体にUIDefaultsからのデータが移入されるようにオーバーライドされます。

        UIDefaultsのプロパティは、つなげて指定される場合があります。 例:

         background
         Button.opacity
         Button.Enabled.foreground
         Button.Enabled+Selected.background
         

        この例では、Enabled+Selectedの状態で、「foreground」が検索されたと仮定します。 この場合、最初にButton.Enabled+Selected.foregroundがチェックされますが、このような色は存在しません。 その後、次に有効な状態(この場合、Button.Enabled.foreground)に戻り、一致が見つかります。 したがって、これが返されます。

        同様に、Enabledの状態で、「background」が検索された場合は、Button.EnabledまたはButtonでは見つかりませんが、UIManagerの最上位レベルで見つかります。 したがって、その値が返されます。

        特記: このメソッドに渡される「キー」の形式は、「background」または「Button.background」です。ここで、「Button」はNimbusStyleコンストラクタに渡される接頭辞と等しいです。 どちらの場合でも、「background」が検索されます。

        オーバーライド:
        get、クラス: SynthStyle
        パラメータ:
        ctx - 要求元を識別するSynthContext
        key - nullは不可
        戻り値:
        指定されたプロパティの値
      • getBackgroundPainter

        public Painter<Object> getBackgroundPainter​(SynthContext ctx)
        指定されたSynthContextに指定された状態の該当するバックグラウンドPainterがあれば、それを取得します。 このメソッドは、#getに記述されているとおりに、適切なフォール・バック検索を実行します。
        パラメータ:
        ctx - SynthContext。 nullは不可。
        戻り値:
        指定された状態に関連するバックグラウンド・ペインタ。バックグラウンド・ペインタが見つからなかった場合はnull。
      • getForegroundPainter

        public Painter<Object> getForegroundPainter​(SynthContext ctx)
        指定されたSynthContextに指定された状態の該当するフォアグラウンドPainterがあれば、それを取得します。 このメソッドは、#getに記述されているとおりに、適切なフォール・バック検索を実行します。
        パラメータ:
        ctx - SynthContext。 nullは不可。
        戻り値:
        指定された状態に関連するフォアグラウンド・ペインタ。フォアグラウンド・ペインタが見つからなかった場合はnull。
      • getBorderPainter

        public Painter<Object> getBorderPainter​(SynthContext ctx)
        指定されたSynthContextに指定された状態の該当するボーダーPainterがあれば、それを取得します。 このメソッドは、#getに記述されているとおりに、適切なフォール・バック検索を実行します。
        パラメータ:
        ctx - SynthContext。 nullは不可。
        戻り値:
        指定された状態に関連するボーダー・ペインタ。ボーダー・ペインタが見つからなかった場合はnull。