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[])
で説明)InputMapUIResource
loadKeyBindings(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[])
で説明)InputMapUIResource
IllegalArgumentException
- c
が null
である場合loadKeyBindings(javax.swing.InputMap, java.lang.Object[])
, ComponentInputMapUIResource
public 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
のペアを追加する InputMap
keys
- retMap
に追加するバインディングNullPointerException
- keys
が non-null
で、空でなく、かつ retMap
が null
である場合KeyStroke.getKeyStroke(String)
, InputMap
public static Object makeIcon(Class<?> baseClass, String gifFile)
UIDefault.LazyValue
を作成して返します。戻り値は、UIDefaults.LazyValue
の実装になります。返されたオブジェクト上で createValue
が呼び出されると、イメージがロードされます。non-null
のイメージは、UIResource
を実装する Icon
にラップされます。イメージのロードは、Class.getResourceAsStream(gifFile)
を使って行われます。
このメソッドは、引数のチェックを行いません。non-null
の値を指定することを強くお勧めします。そうしないと、返されたオブジェクト上で createValue
を呼び出したとき、例外が発生する可能性があります。
baseClass
- リソースのロードに使用する Class
gifFile
- イメージをロードするパスUIDefaults.LazyValue
。解決時に、LazyValue
は指定されたイメージをロードするUIDefaults.LazyValue
, Icon
, Class.getResourceAsStream(String)
public LayoutStyle getLayoutStyle()
LayoutStyle
を返します。戻り値は null
以外です。
通常、Look & Feel の LayoutStyle
は使用しません。代わりに、LayoutStyle
メソッド getInstance
を使用します。
LayoutStyle
LayoutStyle.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
- 無効な状態のアイコンを生成する Icon
Icon
。適切な Icon
を生成できない場合は null
public 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
インスタンスがクライアント側の装飾をサポートする場合、true
JDialog.setDefaultLookAndFeelDecorated(boolean)
, JFrame.setDefaultLookAndFeelDecorated(boolean)
, JRootPane.setWindowDecorationStyle(int)
public abstract boolean isNativeLookAndFeel()
true
を返します。たとえば、基本のプラットフォームが CDE を実行する Solaris である場合、CDE/Motif の Look & Feel の実装が true
を返します。true
public abstract boolean isSupportedLookAndFeel()
true
を返します。Look & Feel が特殊なリソースや、現在のプラットフォームに対して定義されていない法的契約に依存する場合、このメソッドは false
を返します。true
UIManager.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.