Java の素描 #007:《余録》特殊属性(プロパティー)イベントリスナー

記事一覧 Java.use(better, Swing=Jython) #FIFA World Cup への道《Jython2.5》

Java の素描 Jython 弾丸ツアー:時短プログラミング生活のすすめ 〜

《著》森こねこ、伊藤うさぎ、小粒ちゃん@湘南組《監修》タマゴ倶楽部

第1版♪2003/05/23 ● 第2版♪2006/04/03 ● 第3版♪2010/06/11

Step07:《余録》特殊属性(プロパティー)イベントリスナー

■ 特殊属性(プロパティー)イベントリスナー:valueChanged
Java の場合

Java では、イベントリスナーを扱いたいときに、面倒な手続きが必要です。たとえば、リスト項目を選択したときの動作を規定したいときには、

    public Ex() {
        JList comp = new JList(...);
        comp.addListSelectionListener(this);
        ...
    }

    public void valueChanged(ListSelectionEvent e) {
        ...
    }

まず、

  • メソッド addListSelectionListener を利用してリスナーを登録して、

次に、

  • その動作を規定するメソッド valueChanged を用意します。

さらに、

  • イベントを扱う引数には ListSelectionEvent を指定する必要があります。

Jython の場合

Jython では、冗長な表現(addListSelectionListener/ListSelectionEvent)はカプセルに封じ込めて、必要な情報だけを開示するフレームワークが提供されています。たとえば、JavaBeans に準拠した、特殊属性(プロパティー)として、

>>> JList.valueChanged
<beanEventProperty valueChanged for event interface javax.swing.event.ListSelectionListener 0x...>

を利用するだけで、簡潔で洗練されたコードを記述できます。すると、

        comp = JList(
            valueChanged = self,    # addListSelectionListener
            ...
            )

    def __call__(self, e):  # javax.swing.event.ListSelectionEvent
        ...

キーワード引数 valueChanged= を介してイベントリスナーを登録したり、特殊メソッド __call__ を規定するだけで、呼び出し可能オブジェクトとして認識されます。これは、すべてのオブジェクトに適用できる、典型的なイディオムのひとつです。

》作業中です《


関連記事

TOP

Last updated♪2010/08/03