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

クラスState<T extends JComponent>


  • public abstract class State<T extends JComponent>
    extends Object

    Nimbus内の組み込みまたはカスタムの状態を表します。

    Synthでは、次のようないくつかの組込み状態が提供されています。

    • 有効
    • マウス・オーバー
    • 押下
    • 無効
    • フォーカス
    • 選択済
    • デフォルト

    ただし、LookAndFeelで記述できる状態がさらに多数あるため、これらの異なる状態に基づいてコンポーネントのスタイルを別々に設定することをお勧めします。 たとえば、進捗バーを「不確定」にできます。 これを「状態」として定義できると非常に便利です。

    このStateクラスは、このような状況で使用することを目的としています。 #isInState抽象メソッドを実装するだけです。 指定されたJComponentが「この状態にある」場合はtrueを返し、それ以外の場合はfalseを返します。 このメソッドはパフォーマンスが重要なループ何度も呼び出されます。 そのため、非常に高速に実行する必要があります。

    たとえば、JProgressBarのカスタムの「Indeterminate」状態を次のように実装できます。

    
         public final class IndeterminateState extends State<JProgressBar> {
             public IndeterminateState() {
                 super("Indeterminate");
             }
    
             @Override
             protected boolean isInState(JProgressBar c) {
                 return c.isIndeterminate();
             }
         }
     
    • コンストラクタの詳細

      • State

        protected State​(String name)

        新しいカスタムStateを作成します。 状態の名前を指定します。 この名前は、任意の特定コンポーネントの状態セット内で一意になるようにしてください。 状態の名前は、UIDefaultsで使用される名前と一致するようにしてください。

        たとえば、次は正しいです。

        
             defaults.put("Button.States", "Enabled, Foo, Disabled");
             defaults.put("Button.Foo", new FooState("Foo"));
         
        パラメータ:
        name - 状態用の単純でユーザー・フレンドリな名前。「Indeterminate」、「EmbeddedPanel」、「Blurred」など。 最初の文字を大文字するキャメル記法を使用するのが慣例です。
    • メソッドの詳細

      • isInState

        protected abstract boolean isInState​(T c)

        指定されたJComponentがこのクラスによって表されたカスタム状態にあるかどうかを取得します。 これは、非常にパフォーマンスが重要なループです。 適切な予防措置を講じて、高速に実行されるようにしてください。

        Nimbusは、このメソッドを使用してJComponentがどの状態にあるかを判断できます。 たとえば、JProgressBarが不確定の場合にtrueを返すようなカスタムのStateがJProgressBar用に存在できます。 このメソッドのそのような実装は単純に次のようになります。

         return c.isIndeterminate();
        パラメータ:
        c - テストするJComponent。 nullは不可。
        戻り値:
        cの状態がこのStateインスタンスで表されるカスタム状態である場合はtrue