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();
}
}
protected State(String name)
新しいカスタムStateを作成します。状態の名前を指定します。この名前は、任意の特定コンポーネントの状態セット内で一意になるようにしてください。状態の名前は、UIDefaultsで使用される名前と一致するようにしてください。
たとえば、次は正しいです。
defaults.put("Button.States", "Enabled, Foo, Disabled");
defaults.put("Button.Foo", new FooState("Foo"));
name
- 状態用の単純でユーザー・フレンドリな名前。「Indeterminate」、「EmbeddedPanel」、「Blurred」など。最初の文字を大文字するキャメル記法を使用するのが慣例です。public String toString()
Object
toString
メソッドは、このオブジェクトを「テキストで表す」文字列を返します。この結果は、人間が読める簡潔で有益な情報であるべきです。すべてのサブクラスで、このメソッドをオーバーライドすることをお勧めします。
クラスObject
のtoString
メソッドは、オブジェクトがインスタンスになっている元のクラスの名前、アットマーク文字「@
」、およびオブジェクトのハッシュ・コードの符号なし16進数表現から構成される文字列を返します。つまり、このメソッドは次の値と等しい文字列を返します。
getClass().getName() + '@' + Integer.toHexString(hashCode())
protected abstract boolean isInState(T c)
指定されたJComponentがこのクラスによって表されたカスタム状態にあるかどうかを取得します。これは、非常にパフォーマンスが重要なループです。適切な予防措置を講じて、高速に実行されるようにしてください。
Nimbusは、このメソッドを使用してJComponentがどの状態にあるかを判断できます。たとえば、JProgressBarが不確定の場合にtrue
を返すようなカスタムのStateがJProgressBar用に存在できます。このメソッドのそのような実装は単純に次のようになります。
return c.isIndeterminate();
c
- テストするJComponent。nullは不可。c
の状態がこのState
インスタンスで表されるカスタム状態である場合はtrue バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.