- java.lang.Object
-
- javax.swing.plaf.nimbus.State<T>
-
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
-
-