こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ListenerとAdapterの関係がよく分かりません

実に初歩的な質問なのですが、Jappletを使う際、ListenerとAdapterがどうしても混乱してしまいます。

keyAdapterやmouseAdapterを使いたいとき、リスナー登録というものをするようですが
例えば、ActionListenerを使う時は、ActionAdapterというものは使わない気がします。
これらの違いは何なのでしょうか。
また、Adapterを使わずに、keyListenerやmouseListenerのみで、Adapterと同様の動きをするプログラムは作れますか。

簡単な例でいいので、ご教授おねがいできないでしょうか。
それではよろしくおねがいします。

投稿日時 - 2009-04-26 12:08:57

QNo.4910126

すぐに回答ほしいです

質問者が選んだベストアンサー

Listenerというのはインターフェイスだ。これは、implementsすると、すべてのメソッドを実装しなければいけない。となると、例えばものによっては「1つのメソッドだけしか使わない」というときでも、空のメソッドを3つも4つも書かないといけないことになる。例えばマウスクリックだけしか使わないのに、MouseListenerをimplementsして「あ~めんどくせ~」とかいいながら使いもしないmouseEnteredだのmouseExsitedなど書くのはバカらしいだろう。

これは面倒だってんで、あらかじめListenerをimplements済みにしてあるAdapterを用意した、ということ。これなら、使いたいメソッドだけを書けばいい。Listenerのように、使いもしないメソッドまで全部書く必要は無い。要するに「面倒くさい人向けの、Listener組み込み済みクラス」であって、「面倒くさかったら、こんなんありますよ」というだけなので、別にこれを使わずListenerを使ったってぜんぜんかまわない。

では、なぜActionAdapterはないか?というと、ActionListenerには1つのメソッドしかないため。これを使う場合は、必ずこのメソッドを書くことになる。したがって、Adapterをわざわざ用意する必要が無い。というわけで、Adapterは、メソッドが2つ以上あるListenerに対してのみ用意されている。

投稿日時 - 2009-04-26 13:01:34

お礼

なんだかややこしいですが、Adapterというのは便利で汎用的なメソッドなのですね。
小難しいですがなんとか使いこなそうと努力はしてみます。

ありがとうございました。

投稿日時 - 2009-05-02 10:54:18

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問