public interface Action extends ActionListener
Actionインタフェースは、同じ機能が複数のコントロールによってアクセスされる場合に、ActionListenerインタフェースに対する便利な拡張機能を提供します。
ActionListenerインタフェースで定義されるactionPerformedメソッドに加えてこのインタフェースを使用すると、アプリケーションでは次のものを1か所で定義できます。
このインタフェースは既存のクラスに追加したり、アダプタの生成(通常はAbstractActionのサブクラス化)に使用したりすることができます。そして、Actionオブジェクトが複数のAction対応コンテナに追加され、Action対応コンポーネントに接続されます。これによって、ActionオブジェクトのsetEnabledメソッドを呼び出して、GUIコントロールをすべて一度に起動または終了できます。
Actionの実装は、機能の中央制御やプロパティ変更の通知といった利点を提供しない通常のActionListenerより、記憶領域の点で負荷が大きくなる傾向があります。このため、それらの機能を利用する必要がある場合にのみActionを使用するようにして、それ以外では単純なActionListenerを使用するようにしてください。
ActionをサポートするSwingコンポーネント
多くのSwingコンポーネントは、Actionプロパティを持っています。コンポーネントにActionが設定されると、次のことが行われます。
ActionがActionListenerとしてコンポーネントに追加されます。
Actionに一致するように構成します。
Actionのプロパティの変更に応じてプロパティを変更できるように、ActionにPropertyChangeListenerをインストールします。
ActionsをサポートするSwingコンポーネントによって使用されるプロパティを次の表に示します。表のボタンはいずれかのAbstractButtonサブクラスを表し、JButtonだけでなく、JMenuItemなどのクラスも含みます。他に記述がないかぎり、Actionのnullプロパティ値(またはnullであるAction)により、ボタンの対応するプロパティにnullが設定されます。
| コンポーネントのプロパティ | コンポーネント | アクション・キー | 注記 |
|---|---|---|---|
enabled
| すべて | isEnabledメソッド
| |
toolTipText
| すべて | SHORT_DESCRIPTION
| |
actionCommand
| すべて | ACTION_COMMAND_KEY
| |
mnemonic
| すべてのボタン | MNEMONIC_KEY
| null値またはActionは、ボタンのmnemonicプロパティを'\0'に設定することになります。
|
text
| すべてのボタン | NAME
| ボタンのテキストにActionのテキストを反映させたくない場合は、プロパティhideActionTextをtrueに設定します。hideActionTextがtrueの場合、Actionを設定すると、ボタンのテキストがnullに変更され、NAMEの変更はすべて無視されます。hideActionTextは一般にIconのみを表示するツール・バー・ボタンに便利です。LARGE_ICON_KEYまたはSMALL_ICONのActionがnull以外の値を持つ場合、JToolBar.add(Action)はプロパティをtrueに設定します。
|
displayedMnemonicIndex
| すべてのボタン | DISPLAYED_MNEMONIC_INDEX_KEY
| DISPLAYED_MNEMONIC_INDEX_KEYの値がテキストの境界を越える場合は、無視されます。setActionが呼び出されたときに、Actionの値がnullの場合は、ニーモニックのインデックスの表示は更新されません。そのあとでDISPLAYED_MNEMONIC_INDEX_KEYに変更を加える際には、nullは -1として処理されます。
|
icon
| JCheckBox、JToggleButton、およびJRadioButtonを除くすべてのボタン。
| LARGE_ICON_KEYまたはSMALL_ICON
| JMenuItemサブクラスはSMALL_ICONのみを使用します。他のすべてのボタンはLARGE_ICON_KEYを使用します。値がnullの場合、それらはSMALL_ICONを使用します。
|
accelerator
| すべてのJMenuItemサブクラス(JMenuを除く)。
| ACCELERATOR_KEY
| |
selected
| JToggleButton、JCheckBox、JRadioButton、JCheckBoxMenuItem、およびJRadioButtonMenuItem
| SELECTED_KEY
| このプロパティに従うコンポーネントは、値がnull以外である場合、この値だけを使用します。たとえば、JToggleButtonのSELECTED_KEYの値がnullであるActionを設定した場合、JToggleButtonは選択状態を決して更新しません。同様に、ActionのSELECTED_KEYがnull以外の値の場合、JToggleButtonの選択状態が変化するたびに、値はActionに戻ります。このプロパティに従うコンポーネントは、選択状態をこのプロパティの状態と同期化します。同じ Actionを複数のコンポーネントで使用する場合、すべてのコンポーネントの選択状態がこのプロパティの状態と同期します。ButtonGroup内のJToggleButtonのように、相互に排他的な関係にあるボタンは、そのうちのどれか1つだけが選択されます。このため、SELECTED_KEYプロパティの値を定義する1つの同じActionを、相互に排他的な関係にある複数のボタンで使用しないでください。
|
JPopupMenu、JToolBar、およびJMenuはいずれも、コンポーネントの作成と、対応するコンポーネント上でのActionの設定に便利なメソッドを提供します。詳細は、各クラスの説明を参照してください。
Actionは、PropertyChangeListenerを使って、Actionが変更されたことをリスナーに通知します。Bean仕様には、プロパティ名nullを使って複数の値が変更されたことを示すことができると記載されています。デフォルトでは、Actionを実行するSwingコンポーネントは、このような変更を処理しません。SwingがBean仕様に従ってnullを処理するようにするには、システム・プロパティswing.actions.reconfigureOnNullをString値trueに設定します。
AbstractAction| 修飾子と型 | フィールドと説明 |
|---|---|
static String |
ACCELERATOR_KEY
アクションのアクセラレータとして使用する
KeyStrokeの格納に使用されるキーです。 |
static String |
ACTION_COMMAND_KEY
JComponentに関連するKeymapに常駐している結果としてActionが通知されるとき作成される、ActionEventのコマンドStringの判定に使用されるキーです。 |
static String |
DEFAULT
現在使用されていません。
|
static String |
DISPLAYED_MNEMONIC_INDEX_KEY
ニーモニックの装飾が描画されるテキスト内のインデックス(
NAMEプロパティで識別される)に対応するIntegerの格納に使用されるキーです。 |
static String |
LARGE_ICON_KEY
Iconを格納するために使用されるキーです。 |
static String |
LONG_DESCRIPTION
アクションに関する詳細な
Stringの説明を格納するために使用されるキーです。コンテキスト依存ヘルプで使用できます。 |
static String |
MNEMONIC_KEY
KeyEventキー・コードの1つに対応するIntegerの格納に使用されるキーです。 |
static String |
NAME
アクションの名前を表す
Stringの格納に使用するキーです。メニューまたはボタンで使われます。 |
static String |
SELECTED_KEY
選択された状態に対応する
Booleanの格納に使用されるキーです。 |
static String |
SHORT_DESCRIPTION
アクションに関する短い
Stringの説明を格納するために使用されるキーです。ツールヒントのテキストに使用されます。 |
static String |
SMALL_ICON
ImageIconのような小さいIconを格納するために使用されるキーです。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void |
addPropertyChangeListener(PropertyChangeListener listener)
PropertyChangeリスナーを追加します。 |
Object |
getValue(String key)
関連付けられているキーを使ってオブジェクトのプロパティを1つ返します。
|
boolean |
isEnabled()
Actionの有効状態を返します。 |
void |
putValue(String key, Object value)
関連付けられているキーを使って、オブジェクトのプロパティを1つ設定します。
|
void |
removePropertyChangeListener(PropertyChangeListener listener)
PropertyChangeリスナーを削除します。 |
void |
setEnabled(boolean b)
Actionの有効状態を設定します。 |
actionPerformedstatic final String SHORT_DESCRIPTION
Stringの説明を格納するために使用されるキーです。ツールヒントのテキストに使用されます。static final String LONG_DESCRIPTION
Stringの説明を格納するために使用されるキーです。コンテキスト依存ヘルプで使用できます。static final String SMALL_ICON
ImageIconのような小さいIconを格納するために使用されるキーです。通常はJMenuItemなどのメニューで使用されます。
メニューとボタンで同じActionを使用する場合は、通常、SMALL_ICONとLARGE_ICON_KEYを両方とも指定します。メニューはSMALL_ICON、ボタンはLARGE_ICON_KEYを使用します。
static final String ACTION_COMMAND_KEY
JComponentに関連するKeymapに常駐している結果としてActionが通知されるとき作成される、ActionEventのコマンドStringの判定に使用されるキーです。static final String ACCELERATOR_KEY
KeyStrokeの格納に使用されるキーです。static final String MNEMONIC_KEY
KeyEventキー・コードの1つに対応するIntegerの格納に使用されるキーです。この値は一般にニーモニックを指定するために使用されます。たとえば、myAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_A)はmyActionのニーモニックを「a」に設定し、myAction.putValue(Action.MNEMONIC_KEY, KeyEvent.getExtendedKeyCodeForChar('?'))はmyActionのニーモニックをキリル文字の「Ef」に設定します。static final String SELECTED_KEY
Booleanの格納に使用されるキーです。通常、意味のある選択状態のコンポーネントでのみ使用されます。たとえば、JRadioButtonとJCheckBoxはこれを使用しますが、JMenuのインスタンスは使用しません。
このプロパティは、コンポーネントによって読取りと設定の両方が行われる点で、ほかのプロパティとは異なっています。たとえば、ActionがJCheckBoxに接続されている場合、JCheckBoxの選択状態はActionの選択状態から設定されます。ユーザーがJCheckBoxをクリックすると、JCheckBox と Actionの両方の選択状態が更新されます。
注: 既存のActionsとの競合を防ぐため、このフィールドの値の前には「Swing」という接頭辞が付きます。
static final String DISPLAYED_MNEMONIC_INDEX_KEY
NAMEプロパティで識別される)に対応するIntegerの格納に使用されるキーです。このプロパティの値がテキストの長さ以上の場合は、-1として処理されます。
注: 既存のActionsとの競合を防ぐため、このフィールドの値の前には「Swing」という接頭辞が付きます。
AbstractButton.setDisplayedMnemonicIndex(int), 定数フィールド値static final String LARGE_ICON_KEY
Iconを格納するために使用されるキーです。通常、JButton、JToggleButtonなどのボタンで使用されます。
メニューとボタンで同じActionを使用する場合は、通常、SMALL_ICONとLARGE_ICON_KEYを両方とも指定します。メニューはSMALL_ICON、ボタンはLARGE_ICON_KEYを使用します。
注: 既存のActionsとの競合を防ぐため、このフィールドの値の前には「Swing」という接頭辞が付きます。
void putValue(String key, Object value)
PropertyChangeEventがリスナーに送信されます。key - キーが格納されているStringvalue - Object値void setEnabled(boolean b)
Actionの有効状態を設定します。有効な場合は、このオブジェクトに関連した任意のコンポーネントはアクティブであり、このオブジェクトのactionPerformedメソッドをトリガーできます。値が変更されると、PropertyChangeEventがリスナーに送信されます。b - このActionを有効にする場合はtrue、無効にする場合はfalseboolean isEnabled()
Actionの有効状態を返します。有効な場合は、このオブジェクトに関連した任意のコンポーネントはアクティブであり、このオブジェクトのactionPerformedメソッドをトリガーできます。Actionが有効な場合はtruevoid addPropertyChangeListener(PropertyChangeListener listener)
PropertyChangeリスナーを追加します。コンテナ、および接続されたコンポーネントは、これらのメソッドを使用してActionオブジェクトの通知対象として登録します。Actionオブジェクトが有効になった場合、またはその他のプロパティが変化した場合、登録されたリスナーに変更が通知されます。listener - PropertyChangeListenerオブジェクトvoid removePropertyChangeListener(PropertyChangeListener listener)
PropertyChangeリスナーを削除します。listener - PropertyChangeListenerオブジェクトaddPropertyChangeListener(java.beans.PropertyChangeListener) バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.