アクションの実践的な使用手順については、チュートリアルを参照してください。
@S2Actionは、Swing Application Frameworkの@Actionに相当するアノテーションで、メソッドをアクションハンドラ化する機能を持ちます。 @S2Actionアノテーションは@Actionと比較して、アクションの実行可能状態(enabled)と選択状態(selected)をよりスマートに記述できるという特徴があります。
@S2Actionアノテーションを付与するメソッドは、以下の要件を満たす必要があります。
また@S2Actionアノテーションには、オプションとして以下の引数を指定可能です。
引数名 | 説明 |
---|---|
enabled | アクションの実行可能条件を評価する式。メソッドを所有するオブジェクトを評価の基点としたOGNL式で記述します。 |
property | アクションが選択状態となる条件を評価する式。メソッドを所有するオブジェクトを評価の基点としたOGNL式で記述します。 |
block | アクションを非同期実行する場合、そのブロッキングレベル。NONE, ACTION, COMPONENT, WINDOW, APPLICATIONのいずれかを指定します。 |
アクションと特定のUIコンポーネントを結び付ける場合、@ActionTargetアノテーションを使用することができます。 AbstractButtonクラスを継承したコンポーネント(JButton, JToggleButton, JMenuItemなど)のフィールドに対して@ActionTarget アノテーションを付与すると、そのコンポーネントにアクションが自動設定されます。
例えば以下のコードでは、buttonコンポーネントにfooアクションが設定されます。
public class MyFrame extends S2Frame { @ActionTarget("foo") private JButton button = new JButton(); @S2Action public void foo() { // ... } }
アクションをUIコンポーネントに対して手動で設定する場合は、S2FrameクラスやS2Dialogクラスが持つgetActionMap()メソッドを使用し、 アクションマップを取得します。アクションマップのget()メソッドで、@S2Actionアノテーションで定義されたアクションを取り出すことができます。
アクションの表示テキストやショートカットキー、アイコンなどは、リソースファイルに記述します。書式は以下のようになります。
キー | 内容 |
---|---|
[actionName].Action.text | テキスト。ボタンやメニュー項目のキャプションになります。 |
[actionName].Action.shortDescription | 簡単な説明。ボタンやメニュー項目のツールチップテキストになります。 |
[actionName].Action.accelerator | ショートカットキー。"ctrl A"のように指定します。 |
[actionName].Action.icon | アイコン。画像ファイル名を、リソースファイルからの相対パスで記述します。 |