クラスLookAndFeel
- 直系の既知のサブクラス:
BasicLookAndFeel,MultiLookAndFeel
LookAndFeelは、その名前が示す通り、ルック・アンド・フィールをカプセル化します。 ルック・アンド・フィールのインストール時以外に、開発者が直接LookAndFeelと情報をやりとりすることは、ほとんどありません。 通常は、開発者がルック・アンド・フィールをカスタマイズする場合にのみ、このクラスに注意する必要があります。
Swingの構築基盤では、各JComponentサブクラスが特定のComponentUIサブクラスの実装を持っています。 ComponentUIは、通常、「UI」、「コンポーネントUI」、「ルック・アンド・フィールの委譲」などと呼ばれます。 ComponentUIサブクラスは、コンポーネントの特定の機能のルック・アンド・フィールを提供します。 たとえば、JTreeは、ComponentUIサブクラス TreeUIの実装を必要とします。 特定の ComponentUIサブクラスの実装は、LookAndFeelによって提供されます。 各JComponentサブクラスは、JComponentメソッド getUIClassIDを使用して、必要なComponentUIサブクラスを識別します。
各LookAndFeel実装は、getDefaultsから返される、 UIDefaultsオブジェクト内に各Swing UIクラスIDの値を指定することにより、適切なComponentUIサブクラスの実装を提供する必要があります。 たとえば、BasicLookAndFeelは、BasicTreeUIをTreeUIの具象実装として使用します。 このために、 BasicLookAndFeelは、getDefaultsから返されるUIDefaults内にキーと値のペア "TreeUI"-"javax.swing.plaf.basic.BasicTreeUI"を指定します。 ComponentUIサブクラスの実装を取得する方法については、UIDefaults.getUI(JComponent)を参照してください。
LookAndFeelがインストールされるとき、UIManagerはすべてのUIクラスIDのエントリが存在するかどうかを確認しません。 このため、現在のルック・アンド・フィールで特定のUIクラスIDの値が指定されておらず、JComponentサブクラスのインスタンスが作成されている場合、ランダム例外が発生します。
ルック・アンド・フィールの推奨事項
UIManagerに記載されているとおり、各LookAndFeelに、開発者やシステムのデフォルトによって階層化されたデフォルトのセットを提供する機会が与えられます。 一部のSwingコンポーネントは、特定のデフォルトのセットを提供するためにルック・アンド・フィールを要求します。 これらについては、特定のデフォルトを必要とする個々のクラスにドキュメント化されています。
ComponentUIとデフォルト
一般に、すべてのComponentUIsは、ComponentUIがルック・アンド・フィールを提供するJComponent上に様々なプロパティを設定する必要があります。 この処理は通常、 ComponentUIがJComponent上にインストールされるときに行われます。 プロパティの設定は、開発者がプロパティを設定していない場合にのみ行う必要があります。 値が非プリミティブである場合は、現在の値がnullであるか、UIResourceを実装している場合にのみ、 JComponent上でComponentUIがプロパティを変更するようにしてください。 現在の値がnullであるか、UIResourceを実装している場合は、開発者がプロパティを設定していません。このため、UIで自由に変更できます。 たとえば、BasicButtonUI.installDefaultsは、 button.getFont()の戻り値がnullであるか、 UIResourceを実装している場合にのみ、JButtonのフォントを変更します。 一方、button.getFont()の戻り値がnon-nullで、UIResourceを実装していない場合、BasicButtonUI.installDefaultsはJButtonのフォントを変更しません。
opaqueなどのプリミティブ値の場合、メソッド installPropertyを起動する必要があります。installPropertyは、開発者が値を変更していない場合にのみ、対応するプロパティを変更します。
ComponentUI実装は、推奨ガイドラインに従って必要なチェックを行い、プロパティをインストールするときに、このクラスが提供するさまざまなインストール・メソッドを使用します。
例外
変更されるプロパティの値がnullまたはUIResourceである場合、LookAndFeelが提供するすべてのインストール・メソッドは、デフォルト値にアクセスする必要があります。 たとえば、フォントのインストールでは、次の処理が行われます。
JComponent c;
Font font = c.getFont();
if (font == null || (font instanceof UIResource)) {
c.setFont(UIManager.getFont("fontKey"));
}
フォントがnullまたはUIResourceである場合、fontKeyというキーにより、デフォルト・テーブルが照会されます。 UIDefault'sの取得メソッドはすべて、nullを渡された場合に NullPointerExceptionをスローします。 このため、特に記載がないかぎり、現在の値がnullまたはUIResourceで、デフォルト・キーとしてnullが指定された場合、 LookAndFeelの個々のインストール・メソッドはNullPointerExceptionをスローします。 また、特に指定がないかぎり、nullコンポーネントが渡された場合、これらすべてのinstallメソッドはNullPointerExceptionをスローします。 - 導入されたバージョン:
- 1.2
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明ルック・アンド・フィールのデフォルトを返します。abstract Stringこのルック・アンド・フィールの実装に関する1行の説明を返します。static ObjectgetDesktopPropertyValue(String systemPropertyName, Object fallbackValue) Toolkit.getDefaultToolkit().getDesktopProperty()を呼び出すことで、指定されたシステム・デスクトップ・プロパティの値を返します。getDisabledIcon(JComponent component, Icon icon) 無効な状態のIconを返します。getDisabledSelectedIcon(JComponent component, Icon icon) 無効で、かつ選択されているコンポーネントによって使用されるIconを返します。abstract StringgetID()このルック・アンド・フィールを識別する文字列を返します。このルック・アンド・フィールのLayoutStyleを返します。abstract StringgetName()このルック・アンド・フィールを識別する短い文字列を返します。booleanRootPaneUIインスタンスを返すLookAndFeelがJRootPaneでのWindow装飾の提供をサポートする場合は、trueを返します。voidルック・アンド・フィールを初期化します。static voidinstallBorder(JComponent c, String defaultBorderName) コンポーネントのボーダーのプロパティにデフォルト値を設定する簡易メソッドです。static voidinstallColors(JComponent c, String defaultBgName, String defaultFgName) コンポーネントのフォアグラウンド・カラーおよびバックグラウンド・カラーのプロパティにデフォルト値を設定する簡易メソッドです。static voidinstallColorsAndFont(JComponent c, String defaultBgName, String defaultFgName, String defaultFontName) コンポーネントのフォアグラウンド、バックグラウンド、およびフォントのプロパティにデフォルト値を設定する簡易メソッドです。static voidinstallProperty(JComponent c, String propertyName, Object propertyValue) 開発者がまだプロパティを設定していない場合に、指定された名前と値でプロパティをコンポーネントにインストールする簡易メソッドです。abstract boolean基本のプラットフォームに「ネイティブな」ルック・アンド・フィールがあり、現在のルック・アンド・フィールがその実装である場合にtrueを返します。abstract boolean基本のプラットフォームがこのルック・アンド・フィールをサポートする場合、または許可する場合にtrueを返します。static voidloadKeyBindings(InputMap retMap, Object[] keys) 指定されたバインディングでInputMapを生成します。static ComponentInputMapmakeComponentInputMap(JComponent c, Object[] keys) keysからComponentInputMapUIResourceを作成します。static ObjectイメージをロードするUIDefault.LazyValueを作成して返します。static InputMapmakeInputMap(Object[] keys) keysからInputMapUIResourceを作成します。static JTextComponent.KeyBinding[]makeKeyBindings(Object[] keyBindingList) KeyBindingsの配列を構築する簡易メソッドです。voidprovideErrorFeedback(Component component) ユーザーが、フォーカスを持つ編集不可能なJTextFieldへのペーストなどの無効な操作を行おうとしたときに呼び出されます。toString()このオブジェクトのプロパティを表示および識別する文字列を返します。voidルック・アンド・フィールの初期化を解除します。static voidボーダーをアンインストールする簡易メソッドです。
-
コンストラクタの詳細
-
LookAndFeel
protected LookAndFeel()サブクラスが呼び出すためのコンストラクタ。
-
-
メソッドの詳細
-
installColors
public static void installColors(JComponent c, String defaultBgName, String defaultFgName) コンポーネントのフォアグラウンド・カラーおよびバックグラウンド・カラーのプロパティにデフォルト値を設定する簡易メソッドです。 プロパティが設定されるのは、現在の値がnullまたはUIResourceの場合だけです。- パラメータ:
c- 色を設定するコンポーネントdefaultBgName- バックグラウンドのキーdefaultFgName- フォアグラウンドのキー- スロー:
NullPointerException- 「例外」に記載されているとおり- 関連項目:
-
installColorsAndFont
public static void installColorsAndFont(JComponent c, String defaultBgName, String defaultFgName, String defaultFontName) コンポーネントのフォアグラウンド、バックグラウンド、およびフォントのプロパティにデフォルト値を設定する簡易メソッドです。 プロパティが設定されるのは、現在の値がnullまたはUIResourceの場合だけです。- パラメータ:
c- 色とフォントを設定するコンポーネントdefaultBgName- バックグラウンドのキーdefaultFgName- フォアグラウンドのキーdefaultFontName- フォントのキー- スロー:
NullPointerException- 「例外」に記載されているとおり- 関連項目:
-
installBorder
public static void installBorder(JComponent c, String defaultBorderName) コンポーネントのボーダーのプロパティにデフォルト値を設定する簡易メソッドです。 ボーダーが設定されるのは、ボーダーがnullであるか、UIResourceのインスタンスである場合だけです。- パラメータ:
c- ボーダーを設定するコンポーネントdefaultBorderName- ボーダーを指定するキー- スロー:
NullPointerException- 「例外」に記載されているとおり
-
uninstallBorder
public static void uninstallBorder(JComponent c) ボーダーをアンインストールする簡易メソッドです。 コンポーネントのボーダーがUIResourceである場合、nullに設定されます。- パラメータ:
c- ボーダーをアンインストールするコンポーネント- スロー:
NullPointerException-cがnullである場合
-
installProperty
public static void installProperty(JComponent c, String propertyName, Object propertyValue) 開発者がまだプロパティを設定していない場合に、指定された名前と値でプロパティをコンポーネントにインストールする簡易メソッドです。 このメソッドは、プリミティブ型(boolean、intなど)のプロパティのデフォルト値を指定する必要があるが、クライアントによって設定された値はオーバーライドしないUI委譲のインスタンスによって使用されます。 プリミティブ型のプロパティ値はUIResourceマーカーでラップできないため、このメソッドは非公開状態を使用してプロパティがクライアントによって設定されているかどうかを判断します。- パラメータ:
c- プロパティの設定対象のコンポーネントpropertyName- 設定するプロパティの名前propertyValue- プロパティの値- スロー:
IllegalArgumentException- 指定されたプロパティがこのメソッドを使用して設定できるものでない場合ClassCastException- 開発者がプロパティ値を設定しておらず、型がプロパティの型と一致しない場合NullPointerException-cがnullであるか、開発者が名前付きプロパティを設定しておらず、propertyValueがnullである場合- 導入されたバージョン:
- 1.5
-
makeKeyBindings
public static JTextComponent.KeyBinding[] makeKeyBindings(Object[] keyBindingList) KeyBindingsの配列を構築する簡易メソッドです。 このメソッドは非推奨ではありませんが、開発者がキー・バインディングを指定するときは、このメソッドではなく、ActionMapとInputMapを使用するようにしてください。このメソッドは、
keyBindingListの交互になるkey-actionのペアごとの、KeyBindingsの配列を返します。keyは、KeyStroke.getKeyStrokeメソッドで指定された形式のString、またはKeyStrokeです。 キーとアクションのペアのaction部分は、Actionの名前に対応するStringになっています。次に、6組の交互になる
key-actionのペアから1つのKeyBinding配列を作成する例を示します。JTextComponent.KeyBinding[] multilineBindings = makeKeyBindings( new Object[] { "UP", DefaultEditorKit.upAction, "DOWN", DefaultEditorKit.downAction, "PAGE_UP", DefaultEditorKit.pageUpAction, "PAGE_DOWN", DefaultEditorKit.pageDownAction, "ENTER", DefaultEditorKit.insertBreakAction, "TAB", DefaultEditorKit.insertTabAction });keyBindingList'sの長さが奇数の場合、最後の要素は無視されます。key-actionのペアのkey部分またはaction部分にnull値を指定すると、対応する値nullを持つKeyBindingが作成されます。 Swingのその他の部分では、KeyBindingを構成する値としてnon-nullが求められるので、key-actionのペアのkey部分にもaction部分にも、nullを指定しないようにしてください。- パラメータ:
keyBindingList-key-actionのペアの配列- 戻り値:
KeyBindingsの配列- スロー:
NullPointerException-keyBindingListがnullである場合ClassCastException- ペアのkey部分がKeyStrokeでもStringでもない場合、またはペアのaction部分がStringでない場合- 関連項目:
-
makeInputMap
keysからInputMapUIResourceを作成します。 これは、新しいInputMapUIResourceを作成し、loadKeyBindings(map, keys)を呼び出して、InputMapUIResourceを返す簡易メソッドです。- パラメータ:
keys- 交互になるkeystroke-action keyのペア(loadKeyBindings(javax.swing.InputMap, java.lang.Object[])で説明)- 戻り値:
- 新しく作成された
InputMapUIResource - 導入されたバージョン:
- 1.3
- 関連項目:
-
makeComponentInputMap
public static ComponentInputMap makeComponentInputMap(JComponent c, Object[] keys) keysからComponentInputMapUIResourceを作成します。 これは、新しいComponentInputMapUIResourceを作成し、loadKeyBindings(map, keys)を呼び出し、ComponentInputMapUIResourceを戻すための便利なメソッドです。- パラメータ:
c-ComponentInputMapUIResourceの作成に使用するコンポーネントkeys- 交互になるkeystroke-action keyのペア(loadKeyBindings(javax.swing.InputMap, java.lang.Object[])で説明)- 戻り値:
- 新しく作成された
InputMapUIResource - スロー:
IllegalArgumentException-cがnullである場合- 導入されたバージョン:
- 1.3
- 関連項目:
-
loadKeyBindings
指定されたバインディングでInputMapを生成します。 バインディングは、交互になるkeystroke-action keyのペアのリストとして指定されます。keystrokeは、KeyStrokeのインスタンスか、バインディングのKeyStrokeを示すStringになります。 特定の形式については、KeyStroke.getKeyStroke(String)を参照してください。 ペアのaction key部分は、KeyStrokeのInputMap内の登録済みのキーになっています。次に、2組の
key-actionのペアを使って、InputMapをロードする例を示します。LookAndFeel.loadKeyBindings(inputMap, new Object[] { "control X", "cut", "control V", "paste" });バインディング(
keys)のリストとしてnullを指定した場合、retMapは変更されません。action keyとしてnullを指定した場合、InputMapからkeystroke'sのエントリが削除されます。keystrokenullは無視されます。- パラメータ:
retMap-key-actionのペアを追加するInputMapkeys-retMapに追加するバインディング- スロー:
NullPointerException-keysがnon-nullで、空でなく、かつretMapがnullである場合- 導入されたバージョン:
- 1.3
- 関連項目:
-
makeIcon
イメージをロードするUIDefault.LazyValueを作成して返します。 戻り値は、UIDefaults.LazyValueの実装になります。 返されたオブジェクト上でcreateValueが呼び出されると、イメージがロードされます。non-nullのイメージは、UIResourceを実装するIconにラップされます。 イメージのロードは、Class.getResourceAsStream(gifFile)を使って行われます。このメソッドは、引数のチェックを行いません。
non-nullの値を指定することを強くお薦めします。そうしないと、返されたオブジェクト上でcreateValueを呼び出したとき、例外が発生する可能性があります。- パラメータ:
baseClass- リソースのロードに使用するClassgifFile- イメージをロードするパス- 戻り値:
UIDefaults.LazyValue。解決時に、LazyValueは指定されたイメージをロードする- 関連項目:
-
getLayoutStyle
public LayoutStyle getLayoutStyle()このルック・アンド・フィールのLayoutStyleを返します。 戻り値はnull以外です。通常、ルック・アンド・フィールの
LayoutStyleは使用しません。代わりに、LayoutStyleメソッドgetInstanceを使用します。- 戻り値:
- このルック・アンド・フィールの
LayoutStyle - 導入されたバージョン:
- 1.6
- 関連項目:
-
provideErrorFeedback
public void provideErrorFeedback(Component component) ユーザーが、フォーカスを持つ編集不可能なJTextFieldへのペーストなどの無効な操作を行おうとしたときに呼び出されます。 デフォルトの実装では、ビープ音を鳴らします。 別の動作を行う場合は、デフォルトの実装をサブクラスによってオーバーライドし、別のフィード・バックを指定する必要があります。- パラメータ:
component- エラーが発生したComponent。nullも指定できる(この場合、エラー条件はComponentと直接関連付けられない)- 導入されたバージョン:
- 1.4
-
getDesktopPropertyValue
Toolkit.getDefaultToolkit().getDesktopProperty()を呼び出すことで、指定されたシステム・デスクトップ・プロパティの値を返します。 指定されたプロパティの値がnullの場合、fallbackValueが返されます。- パラメータ:
systemPropertyName- 照会するシステム・デスクトップ・プロパティの名前fallbackValue- システム値がnullの場合、値として戻るオブジェクト- 戻り値:
- デスクトップ・プロパティの現在の値
- 導入されたバージョン:
- 1.4
- 関連項目:
-
getDisabledIcon
public Icon getDisabledIcon(JComponent component, Icon icon) 無効な状態のIconを返します。 このメソッドは、無効な状態のIconが指定されていない場合に、それを生成するために使用されます。 たとえば、JButtonを作成し、setIconによりIconのみを指定した場合このメソッドが呼び出され、無効な状態のIconが作成されます。iconとしてnullが渡された場合、このメソッドはnullを返します。ルック・アンド・フィールによっては無効な状態の
Iconが描画されないことがあり、その場合、これは無視されます。- パラメータ:
component-Iconを表示するJComponent。nullも可icon- 無効な状態のアイコンを生成するIcon- 戻り値:
- 無効な状態の
Icon。適切なIconを生成できない場合はnull - 導入されたバージョン:
- 1.5
-
getDisabledSelectedIcon
public Icon getDisabledSelectedIcon(JComponent component, Icon icon) 無効で、かつ選択されているコンポーネントによって使用されるIconを返します。 このメソッドは、無効で、かつ選択されている状態のコンポーネントに対して、この状態の特定のIconが設定されていない場合に、Iconを生成するために使用します。 たとえば、JButtonを作成し、setIconによりIconのみを指定した場合、このメソッドが呼び出され、無効でかつ選択されているIconが作成されます。iconとしてnullが渡された場合、このメソッドはnullを返します。ルック・アンド・フィールによっては、無効で、かつ選択されている状態の
Iconが描画されないことがありますが、その場合、このメソッドは無視されます。- パラメータ:
component-Iconを表示するJComponent。nullも可icon- 無効で、かつ選択されている状態のアイコンを生成するIcon。- 戻り値:
- 選択された無効な状態のアイコン。適切な
Iconを生成できない場合はnull。 - 導入されたバージョン:
- 1.5
-
getName
public abstract String getName()「CDE/Motif」など、このルック・アンド・フィールを識別する短い文字列を返します。 この文字列は、メニュー項目に適しています。 ルック・アンド・フィールは、それぞれ異なる名前を持っています。たとえば、数個のコンポーネントの描画方法を変更するMotifLookAndFeelのサブクラスは、「CDE/Motif My Way」などと呼ばれます。こうした名前は、ユーザーが名前のリストからL&Fを選択するときに便利です。- 戻り値:
- このルック・アンド・フィールを識別する短い識別子
-
getID
public abstract String getID()このルック・アンド・フィールを識別する文字列を返します。 この文字列は、有名なルック・アンド・フィールの実装を認識するアプリケーション/サービスで使用されます。 現在、有名なものとしては「Motif」、「Windows」、「Mac」、「Metal」などです。 ルック・アンド・フィールに基本的な変更を加えない有名なスーパー・クラスから派生したLookAndFeelは、このメソッドをオーバーライドすべきではありません。- 戻り値:
- このルック・アンド・フィールを識別する識別子
-
getDescription
public abstract String getDescription()「The CDE/Motif Look and Feel」など、このルック・アンド・フィールの実装に対する1行の説明を返します。 これはユーザー向けの文字列で、ウィンドウのタイトルやツールヒント・メッセージなどに使用されます。- 戻り値:
- このルック・アンド・フィールの短い説明
-
getSupportsWindowDecorations
public boolean getSupportsWindowDecorations()RootPaneUIインスタンスを返すLookAndFeelがJRootPaneでのWindow装飾の提供をサポートする場合は、trueを返します。デフォルトの実装は
falseを返します。Window装飾をサポートするサブクラスは、この実装をオーバーライドし、trueを返すようにします。- 戻り値:
- このルック・アンド・フィールによって作成された
RootPaneUIインスタンスがクライアント側の装飾をサポートする場合、true - 導入されたバージョン:
- 1.4
- 関連項目:
-
isNativeLookAndFeel
public abstract boolean isNativeLookAndFeel()基本のプラットフォームに「ネイティブな」ルック・アンド・フィールがあり、現在のルック・アンド・フィールがその実装である場合にtrueを返します。 たとえば、基本のプラットフォームがCDEを実行するSolarisである場合、CDE/Motifのルック・アンド・フィールの実装がtrueを返します。- 戻り値:
- このルック・アンド・フィールが基本のプラットフォームのルック・アンド・フィールを表す場合、
true
-
isSupportedLookAndFeel
public abstract boolean isSupportedLookAndFeel()基本のプラットフォームがこのルック・アンド・フィールをサポートする場合、または許可する場合にtrueを返します。 ルック・アンド・フィールが特殊なリソースや、現在のプラットフォームに対して定義されていない法的契約に依存する場合、このメソッドはfalseを返します。- 戻り値:
- これがサポートされているルック・アンド・フィールである場合、
true - 関連項目:
-
initialize
public void initialize()ルック・アンド・フィールを初期化します。 このメソッドはpublicメソッドですが、ルック・アンド・フィールが現在のルック・アンド・フィールとしてインストールされたときにのみ、UIManagerによって呼び出すようにしてください。 このメソッドは、UIManagerがgetDefaultsを呼び出す前に呼び出されます。 このメソッドは、ルック・アンド・フィールの初期化を実行するためのメソッドです。 staticイニシャライザではなくサブクラスが、必要とする1回かぎりの設定を実行する必要があります。ルック・アンド・フィールクラス・オブジェクトは、isSupportedLookAndFeel()がfalseを返すことを検出する目的のみでロードされる可能性があるためです。- 関連項目:
-
uninitialize
public void uninitialize()ルック・アンド・フィールの初期化を解除します。 このメソッドはpublicメソッドですが、ルック・アンド・フィールがアンインストールされるときにUIManagerによって呼び出すようにしてください。 たとえば、UIManager.setLookAndFeelがルック・アンド・フィールの変更時にこのメソッドを呼び出します。サブクラスがここで一部のリソースを解放することを選択してもかまいません。
- 関連項目:
-
getDefaults
public UIDefaults getDefaults()ルック・アンド・フィールのデフォルトを返します。 このメソッドはpublicメソッドですが、ルック・アンド・フィールが現在のルック・アンド・フィールとして設定され、initializeが呼び出されたあとにのみ、UIManagerによって呼び出すようにしてください。- 戻り値:
- ルック・アンド・フィールのデフォルト
- 関連項目:
-
toString
-