Swing Application Frameworkのアクションメソッド引数

Swing Application Frameworkのアクションメソッドは引数を持たないのが普通ですが、以下の型で引数を宣言しておくと、メソッド呼び出し時にフレームワークが適切なオブジェクトを代入してくれます。

  • java.awt.event.ActionEvent
  • javax.swing.Action
  • javax.swing.ActionMap
  • org.jdesktop.application.ResourceMap
  • org.jdesktop.application.ApplicationContext
  • org.jdesktop.application.Application

なお、メソッドに上記以外の引数が含まれるとエラーになります。

この中で特に便利なのはActionEventです。複数のコンポーネントでアクションを共有している場合、以下のようにアクションの呼び出し元を判別できます。

@Action
public void doSomething(ActionEvent e) {
    Object source = e.getSource();
    if (source == button1) {
        System.out.println("button1 clicked.");
    } else if (source == button2) {
        System.out.println("button2 clicked.");
    }
}