さて,リスナーを実装するたびに利用しない複数のメソッドまで記述しなくてはならいの は手間と言えるだろう. この問題を解決する方法としてリスナーに対応した アダプタというクラスがある.
アダプタは対応するリスナーのメソッドを全て空のメソッドで実装したクラスであり,こ
れを拡張( extends)して,必要なメソッドだけをオーバーライドすることでイベ
ントを処理することができる.
上のお絵かきプログラムをアダプタを利用して書き換えてみよう. この場合,利用している二つのリスナー( MouseListenerおよび MouseMotionListener)に対応したアダプタを拡張したクラスが必要となるため,クラス は全部で3つとなる. ここでは Scribble2と MyMouseListener, MyMouseMotionListenerとい う名前とした. 以下にプログラムを示す.
これはアプレット本体のクラスである. プログラムは init()メソッドのみからなっており,特に難しいところはないだろう.
これは MouseListenerに対応するクラスで, MouseAdapterクラスを拡張して 作成されている.
これも MyMouseListenerクラスと同様で, MouseMotionAdapterクラスを拡張 して作成されている.
上記のアダプタを用いたプログラムは,記述が簡単になり見通しがよくなる一方で,以下 のような問題点がある.