public abstract class LookAndFeel extends Object
LookAndFeel は、その名前が示す通り、Look & Feel をカプセル化します。Look & Feel のインストール時以外に、開発者が直接 LookAndFeel と情報をやりとりすることは、ほとんどありません。通常は、開発者が Look & Feel をカスタマイズする場合にのみ、このクラスに注意する必要があります。
Swing の構築基盤では、各 JComponent サブクラスが特定の ComponentUI サブクラスの実装を持っています。ComponentUI は、通常、「UI」、「コンポーネント UI」、「Look & Feel の委譲」などと呼ばれます。ComponentUI サブクラスは、コンポーネントの特定の機能の Look & Feel を提供します。たとえば、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 のエントリが存在するかどうかを確認しません。このため、現在の Look & Feel で特定の UI クラス ID の値が指定されておらず、JComponent サブクラスのインスタンスが作成されている場合、ランダム例外が発生します。
UIManager に記載されているとおり、各 LookAndFeel に、開発者やシステムのデフォルトによって階層化されたデフォルトのセットを提供する機会が与えられます。一部の Swing コンポーネントは、特定のデフォルトのセットを提供するために Look & Feel を要求します。これらについては、特定のデフォルトを必要とする個々のクラスにドキュメント化されています。
ComponentUIs は、ComponentUI が Look & Feel を提供する 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 をスローします。| コンストラクタと説明 |
|---|
LookAndFeel() |
| 修飾子と型 | メソッドと説明 |
|---|---|
UIDefaults |
getDefaults()
Look & Feel のデフォルトを返します。
|
abstract String |
getDescription()
この Look & Feel の実装に関する 1 行の説明を返します。
|
static Object |
getDesktopPropertyValue(String systemPropertyName, Object fallbackValue)
Toolkit.getDefaultToolkit().getDesktopProperty() を呼び出すことで、指定されたシステムデスクトッププロパティーの値を返します。 |
Icon |
getDisabledIcon(JComponent component, Icon icon)
無効な状態の
Icon を返します。 |
Icon |
getDisabledSelectedIcon(JComponent component, Icon icon)
無効で、かつ選択されているコンポーネントによって使用される
Icon を返します。 |
abstract String |
getID()
この Look & Feel を識別する文字列を返します。
|
LayoutStyle |
getLayoutStyle()
この Look & Feel の
LayoutStyle を返します。 |
abstract String |
getName()
この Look & Feel を識別する短い文字列を返します。
|
boolean |
getSupportsWindowDecorations()
RootPaneUI インスタンスを返す LookAndFeel が JRootPane での Window 装飾の提供をサポートする場合は、true を返します。 |
void |
initialize()
Look & Feel を初期化します。
|
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 |
isNativeLookAndFeel()
基本のプラットフォームに「ネイティブな」Look & Feel があり、現在の Look & Feel がその実装である場合に
true を返します。 |
abstract boolean |
isSupportedLookAndFeel()
基本のプラットフォームがこの Look & Feel をサポートする場合、または許可する場合に
true を返します。 |
static void |
loadKeyBindings(InputMap retMap, Object[] keys)
指定されたバインディングで
InputMap を生成します。 |
static ComponentInputMap |
makeComponentInputMap(JComponent c, Object[] keys)
keys から ComponentInputMapUIResource を作成します。 |
static Object |
makeIcon(Class<?> baseClass, String gifFile)
イメージをロードする
UIDefault.LazyValue を作成して返します。 |
static InputMap |
makeInputMap(Object[] keys)
keys から InputMapUIResource を作成します。 |
static JTextComponent.KeyBinding[] |
makeKeyBindings(Object[] keyBindingList)
KeyBindings の配列を構築する簡易メソッドです。 |
void |
provideErrorFeedback(Component component)
ユーザーが、フォーカスを持つ編集不可能な
JTextField へのペーストなどの無効な操作を行おうとしたときに呼び出されます。 |
String |
toString()
このオブジェクトのプロパティーを表示および識別する文字列を返します。
|
void |
uninitialize()
Look & Feel の初期化を解除します。
|
static void |
uninstallBorder(JComponent c)
ボーダーをアンインストールする簡易メソッドです。
|
public static void installColors(JComponent c, String defaultBgName, String defaultFgName)
null または UIResource の場合だけです。c - 色を設定するコンポーネントdefaultBgName - バックグラウンドのキーdefaultFgName - フォアグラウンドのキーNullPointerException - 「例外」に記載されているとおりinstallColorsAndFont(javax.swing.JComponent, java.lang.String, java.lang.String, java.lang.String), UIManager.getColor(java.lang.Object)public static void installColorsAndFont(JComponent c, String defaultBgName, String defaultFgName, String defaultFontName)
null または UIResource の場合だけです。c - 色とフォントを設定するコンポーネントdefaultBgName - バックグラウンドのキーdefaultFgName - フォアグラウンドのキーdefaultFontName - フォントのキーNullPointerException - 「例外」に記載されているとおりinstallColors(javax.swing.JComponent, java.lang.String, java.lang.String), UIManager.getColor(java.lang.Object), UIManager.getFont(java.lang.Object)public static void installBorder(JComponent c, String defaultBorderName)
null であるか、UIResource のインスタンスである場合だけです。c - ボーダーを設定するコンポーネントdefaultBorderName - ボーダーを指定するキーNullPointerException - 「例外」に記載されているとおりpublic static void uninstallBorder(JComponent c)
UIResource である場合、null に設定されます。c - ボーダーをアンインストールするコンポーネントNullPointerException - c が null である場合public static void installProperty(JComponent c, String propertyName, Object propertyValue)
UIResource マーカーでラップできないため、このメソッドは非公開状態を使用してプロパティーがクライアントによって設定されているかどうかを判断します。c - プロパティーの設定対象のコンポーネントpropertyName - 設定するプロパティーの名前propertyValue - プロパティーの値IllegalArgumentException - 指定されたプロパティーがこのメソッドを使用して設定できるものでない場合ClassCastException - 開発者がプロパティー値を設定しておらず、型がプロパティーの型と一致しない場合NullPointerException - c が null であるか、開発者が名前付きプロパティーを設定しておらず、propertyValue が null である場合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 でない場合ActionMap, InputMap, KeyStroke.getKeyStroke(char)public static InputMap makeInputMap(Object[] keys)
keys から InputMapUIResource を作成します。これは、新しい InputMapUIResource を作成し、loadKeyBindings(map, keys) を呼び出して、InputMapUIResource を返す簡易メソッドです。keys - 交互になる keystroke-action key のペア (loadKeyBindings(javax.swing.InputMap, java.lang.Object[]) で説明)InputMapUIResourceloadKeyBindings(javax.swing.InputMap, java.lang.Object[])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[]) で説明)InputMapUIResourceIllegalArgumentException - c が null である場合loadKeyBindings(javax.swing.InputMap, java.lang.Object[]), ComponentInputMapUIResourcepublic static void loadKeyBindings(InputMap retMap, Object[] keys)
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 のペアを追加する InputMapkeys - retMap に追加するバインディングNullPointerException - keys が non-null で、空でなく、かつ retMap が null である場合KeyStroke.getKeyStroke(String), InputMappublic static Object makeIcon(Class<?> baseClass, String gifFile)
UIDefault.LazyValue を作成して返します。戻り値は、UIDefaults.LazyValue の実装になります。返されたオブジェクト上で createValue が呼び出されると、イメージがロードされます。non-null のイメージは、UIResource を実装する Icon にラップされます。イメージのロードは、Class.getResourceAsStream(gifFile) を使って行われます。
このメソッドは、引数のチェックを行いません。non-null の値を指定することを強くお勧めします。そうしないと、返されたオブジェクト上で createValue を呼び出したとき、例外が発生する可能性があります。
baseClass - リソースのロードに使用する ClassgifFile - イメージをロードするパスUIDefaults.LazyValue。解決時に、LazyValue は指定されたイメージをロードするUIDefaults.LazyValue, Icon, Class.getResourceAsStream(String)public LayoutStyle getLayoutStyle()
LayoutStyle を返します。戻り値は null 以外です。
通常、Look & Feel の LayoutStyle は使用しません。代わりに、LayoutStyle メソッド getInstance を使用します。
LayoutStyleLayoutStyle.getInstance()public void provideErrorFeedback(Component component)
JTextField へのペーストなどの無効な操作を行おうとしたときに呼び出されます。デフォルトの実装では、ビープ音を鳴らします。別の動作を行う場合は、デフォルトの実装をサブクラスによってオーバーライドし、別のフィードバックを指定する必要があります。component - エラーが発生したComponent。null も指定できる (この場合、エラー条件は Component と直接関連付けられない)public static Object getDesktopPropertyValue(String systemPropertyName, Object fallbackValue)
Toolkit.getDefaultToolkit().getDesktopProperty() を呼び出すことで、指定されたシステムデスクトッププロパティーの値を返します。指定されたプロパティーの値が null の場合、fallbackValue が返されます。systemPropertyName - 照会するシステムデスクトッププロパティーの名前fallbackValue - システム値が null の場合、値として戻るオブジェクトToolkit.getDesktopProperty(java.lang.String)public Icon getDisabledIcon(JComponent component, Icon icon)
Icon を返します。このメソッドは、無効な状態の Icon が指定されていない場合に、それを生成するために使用されます。たとえば、JButton を作成し、setIcon により Icon のみを指定した場合このメソッドが呼び出され、無効な状態の Icon が作成されます。icon として null が渡された場合、このメソッドは null を返します。
Look & Feel によっては無効な状態の Icon が描画されないことがあり、その場合、これは無視されます。
component - Icon を表示する JComponent。null も可icon - 無効な状態のアイコンを生成する IconIcon。適切な Icon を生成できない場合は nullpublic Icon getDisabledSelectedIcon(JComponent component, Icon icon)
Icon を返します。このメソッドは、無効で、かつ選択されている状態のコンポーネントに対して、この状態の特定の Icon が設定されていない場合に、Icon を生成するために使用します。たとえば、JButton を作成し、setIcon により Icon のみを指定した場合、このメソッドが呼び出され、無効でかつ選択されている Icon が作成されます。icon として null が渡された場合、このメソッドは null を返します。
Look & Feel によっては、無効で、かつ選択されている状態の Icon が描画されないことがありますが、その場合、このメソッドは無視されます。
component - Icon を表示する JComponent。null も可icon - 無効で、かつ選択されている状態のアイコンを生成する Icon。Icon を生成できない場合は null。public abstract String getName()
public abstract String getID()
public abstract String getDescription()
public boolean getSupportsWindowDecorations()
RootPaneUI インスタンスを返す LookAndFeel が JRootPane での Window 装飾の提供をサポートする場合は、true を返します。
デフォルトの実装は false を返します。Window 装飾をサポートするサブクラスは、この実装をオーバーライドし、true を返すようにします。
RootPaneUI インスタンスがクライアント側の装飾をサポートする場合、trueJDialog.setDefaultLookAndFeelDecorated(boolean), JFrame.setDefaultLookAndFeelDecorated(boolean), JRootPane.setWindowDecorationStyle(int)public abstract boolean isNativeLookAndFeel()
true を返します。たとえば、基本のプラットフォームが CDE を実行する Solaris である場合、CDE/Motif の Look & Feel の実装が true を返します。truepublic abstract boolean isSupportedLookAndFeel()
true を返します。Look & Feel が特殊なリソースや、現在のプラットフォームに対して定義されていない法的契約に依存する場合、このメソッドは false を返します。trueUIManager.setLookAndFeel(javax.swing.LookAndFeel)public void initialize()
UIManager によって呼び出すようにしてください。このメソッドは、UIManager が getDefaults を呼び出す前に呼び出されます。このメソッドは、Look & Feel の初期化を実行するためのメソッドです。static イニシャライザではなくサブクラスが、必要とする 1 回かぎりの設定を実行するべきです。Look & Feel クラスオブジェクトは、isSupportedLookAndFeel() が false を返すことを検出するためだけにロードされる可能性があるためです。public void uninitialize()
UIManager によって呼び出すようにしてください。たとえば、UIManager.setLookAndFeel が Look & Feel の変更時にこのメソッドを呼び出します。
サブクラスがここで一部のリソースを解放することを選択してもかまいません。
public UIDefaults getDefaults()
initialize が呼び出されたあとにのみ、UIManager によって呼び出すようにしてください。initialize(), uninitialize(), UIManager.setLookAndFeel(javax.swing.LookAndFeel) バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.