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__ を規定するだけで、呼び出し可能オブジェクトとして認識されます。これは、すべてのオブジェクトに適用できる、典型的なイディオムのひとつです。
》作業中です《