- 直系の既知のサブクラス:
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 Object
getDesktopPropertyValue
(String systemPropertyName, Object fallbackValue) Toolkit.getDefaultToolkit().getDesktopProperty()
を呼び出すことで、指定されたシステム・デスクトップ・プロパティの値を返します。getDisabledIcon
(JComponent component, Icon icon) 無効な状態のIcon
を返します。getDisabledSelectedIcon
(JComponent component, Icon icon) 無効で、かつ選択されているコンポーネントによって使用されるIcon
を返します。abstract String
getID()
このルック・アンド・フィールを識別する文字列を返します。このルック・アンド・フィールのLayoutStyle
を返します。abstract String
getName()
このルック・アンド・フィールを識別する短い文字列を返します。boolean
RootPaneUI
インスタンスを返すLookAndFeel
がJRootPane
でのWindow
装飾の提供をサポートする場合は、true
を返します。void
ルック・アンド・フィールを初期化します。static void
installBorder
(JComponent c, String defaultBorderName) コンポーネントのボーダーのプロパティにデフォルト値を設定する簡易メソッドです。static void
installColors
(JComponent c, String defaultBgName, String defaultFgName) コンポーネントのフォアグラウンド・カラーおよびバックグラウンド・カラーのプロパティにデフォルト値を設定する簡易メソッドです。static void
installColorsAndFont
(JComponent c, String defaultBgName, String defaultFgName, String defaultFontName) コンポーネントのフォアグラウンド、バックグラウンド、およびフォントのプロパティにデフォルト値を設定する簡易メソッドです。static void
installProperty
(JComponent c, String propertyName, Object propertyValue) 開発者がまだプロパティを設定していない場合に、指定された名前と値でプロパティをコンポーネントにインストールする簡易メソッドです。abstract boolean
基本のプラットフォームに「ネイティブな」ルック・アンド・フィールがあり、現在のルック・アンド・フィールがその実装である場合にtrue
を返します。abstract boolean
基本のプラットフォームがこのルック・アンド・フィールをサポートする場合、または許可する場合にtrue
を返します。static void
loadKeyBindings
(InputMap retMap, Object[] keys) 指定されたバインディングでInputMap
を生成します。static ComponentInputMap
makeComponentInputMap
(JComponent c, Object[] keys) keys
からComponentInputMapUIResource
を作成します。static Object
イメージをロードするUIDefault.LazyValue
を作成して返します。static InputMap
makeInputMap
(Object[] keys) keys
からInputMapUIResource
を作成します。static JTextComponent.KeyBinding[]
makeKeyBindings
(Object[] keyBindingList) KeyBindings
の配列を構築する簡易メソッドです。void
provideErrorFeedback
(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
のエントリが削除されます。keystroke
null
は無視されます。- パラメータ:
retMap
-key-action
のペアを追加するInputMap
keys
-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
- リソースのロードに使用するClass
gifFile
- イメージをロードするパス- 戻り値:
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
public String toString()このオブジェクトのプロパティを表示および識別する文字列を返します。
-