• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:作ったクラスにイベントを追加するには?)

作ったクラスにイベントを追加するには?

このQ&Aのポイント
  • 作ったクラスにイベントを追加する方法について教えてください。
  • パネルを継承したクラスを作成し、その中でサブパネルのイベントを書きたいですが、どのようにすればよいでしょうか?
  • 具体的なコード例とともに説明してください。

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

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

>毎回ngsvxさんのご好意に甘えてしまい・・・。 そして今回も・・・ご回答ありがとうございます。 全然気にしてませんから、大丈夫ですよ。 ちょっと、時間がないので、手短に書いておきます。 addMouseListenerメソッドには、引数としMouseListener インターフェースを渡します。 これは、「マウスイベントの聞き手」ということです。 これを実装したインスタンスは、マウスイベントを検知できます。 ただ、このインターフェースはメソッドの数が多いため、 全てを実装するのは面倒です(コードをたくさん書く)。 そのため、MouseAdapterというアダプタークラスを使います。 (もちろん、直接実装しても問題はありません)。 アダプタークラスというのは、インターフェースのメソッドを、全て空で実装してあるクラスなのです。 これを継承してあげれば、必要なメソッドだけを定義すればいいので楽だ、ということです。 詳しくは、参考書なりをご覧下さい。 これは、よくでてくることなので、しっかりとマスター した方がいですよ。 今日は時間がないもので、とりあえずこれで失礼します。

t-tree
質問者

お礼

毎回の事ながら、大変わかりやすいご説明ありがとうございました。 そして、教えていただいた通りちゃんとイベントが取れました!!! 多分、月曜日にも質問を出してしまうと思います。お時間があったらまたお願いします。

その他の回答 (1)

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

よく会いますね(^^; 「直ぐに回答ほしいです」となっているので、直ぐに答えましょう。 1.マウスクリックをしたときに処理を行うクラス(この場合はPanelA)  にMouseListenerインターフェースを実装させる。   あるいは、MouseAdapterクラスを継承し必要なメソッドをオーバーライドする。   (これは無名クラスでいいでしょう) 2.マウスクリックを発生させたいコンポーネントに対し、addMouseListenerを実行する。 コンストラクタで pnlSub.addMouseListener( new MouseAdapter(){                 public void mouseClicked(MouseEvent e){                   /* イベント処理                    */                 }}); でいいと思いますよ。

t-tree
質問者

お礼

>よく会いますね(^^; ただ私が勉強不足なだけで、毎回ngsvxさんのご好意に甘えてしまい・・・。 そして今回も・・・ご回答ありがとうございます。 >MouseListenerインターフェースを実装させる。  MouseAdapterクラスを継承し必要なメソッドをオーバー ライドする。 これはどういった意味なのでしょうか? きっとngsvxさんが書いてくださったロジックを素直に書けばよいのだとは思いますが、理解しとかないと同じような質問をまたしてしまいそうで・・・ ngsvxの書いてくださったコンストラクタでのロジックが言わんとされていることでしょうか?