イベントリスナーを登録する

ボタンを選択したときに発生するイベントに反応するには、リスナーを設定しておきます。それには、次のように、

    public void addActionListener(ActionListener l)

メソッド addActionListener を利用します。引数 l には、インターフェース ActionListener を実現した、任意のリスナーオブジェクトを指定できます。リスナーには、次のメソッドを実現しておく必要があります。


    void actionPerformed(ActionEvent e)

メソッド actionPerformed(ActionEvent) は(Swing が提供するフレームワークに沿って)イベント ActionEvent が発生したときに呼び出されます。「ハリウッドの原則」に従って、このメソッドを呼び出すコードを記述する必要はありません。そして、メソッドを定義するときには、発生したイベント e から、必要な情報を獲得できます。

    view = new JButton();
view.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
...

JavaBeans に準拠した Swing には、Jython の便利な機能を適用できます。すると、ここに示した Java 版のコードと同じ効果を得るのは簡単で、次のように、

    view = JButton( 
actionPerformed=now,

キーワード引数 actionPerformed= の後に、イベントリスナー(関数/メソッド)を指定するだけです。すると、特定のクラス(実現方法)には依存せず「インターフェースの規定だけに従う」ことが、より明確になります。


このようにすると、キーワード actionPerformed= を固定するだけで、仕様変更にも柔軟に対処できるコードが得られます。Java の国境を越えて Jython の世界に入るときには、addActionListener/ActionListener など余分な荷物は捨てて、身軽な旅を堪能できます。この特徴は、他のコンポーネントにも利用できるので、重宝します。