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

解決済みの質問

配列で作ったオブジェクトのイベントを取得するには?

下記のクラス内で"ary"という10枚のパネルのオブジェクトを配列で作成しました。その"ary"パネルがクリックされた時のイベントを書きたいのですが、私の書いたロジックではイベントを取得できませんでした。
なにか良い方法がありませんでしょうか?


public class Main_Panel extends Panel{
int y = 0;
Panel ary[] = new Panel[10];

  //CONSTRUCT
public MainPanel() {
for(int i = 0 ; i < 10; i++ ){
ary[i] = new Panel()
this.add(ary[i], null);
ary[i].setBounds(new Rectangle(0, y, 5, 5));
intYPos = intYPos + 10;

ary[i].addMouseListener(new ary_MouseAdapter(this));
}
}


//パネル(ary)クリックイベント
void ary_mouseClicked(MouseEvent e){

}

}


class ary_MouseAdapter extends java.awt.event.MouseAdapter {
Main_Panel adaptee;
ary_MouseAdapter(Main_Panel adaptee) {
this.adaptee = adaptee;
}
public void mouseClicked(MouseEvent e) {
adaptee.ary_mouseClicked(e, num);
}
}

投稿日時 - 2003-05-22 16:36:40

QNo.554688

すぐに回答ほしいです

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

>adaptee.ary_mouseClicked(e, num);

とメソッド呼び出しの記述をしていますが、呼び出される側は

>void ary_mouseClicked(MouseEvent e)

と、なっており引数の整合性が合いません。
これではコンパイルすら通らないと思いますので、恐らくは記入時のミスとは思いますけど。
で、問題点ですが「イベントの取得」に関してだけいえば問題は無いと思います。
というか、イベントはきちんと ary_mouseClick() メソッドに関連付けられていますので、真の問題は別にあると思われます。
まず、どのように「イベントの取得」の有無を確認されたのでしょうか?
もしかして、子パネルじゃ無い所を「在る」と思いこんでクリックしてはいませんか?
取り敢えず、各子パネルに背景色でも指定して、表示位置を確認してみて下さい。
どうも、t-treeさんのレイアウト指定の意図が見えてこない記述なのでその部分が気になりました。
細かい記述上の問題点は多々ありますが、取り敢えず。

投稿日時 - 2003-05-22 20:41:33

お礼

お礼が遅れてすみません。
お答えありがとうございました。

>これではコンパイルすら通らないと思いますので、恐らくは記入時のミスとは思いますけど。
ずばりです・・・質問時に少々書き直ししたので・・・

>まず、どのように「イベントの取得」の有無を確認されたのでしょうか?
JBuilder8を使用しているので、"void ary_mouseClicked(MouseEvent e)"イベント内にブレークポイントを置きパネルをクリックしているのですが引っかかりません。

>もしかして、子パネルじゃ無い所を「在る」と思いこんでクリックしてはいませんか?
先ほども書きましたがロジックを少々書き直しておりまして・・・本当はパネルに絵が貼り付けてありますのでパネルクリックは正しくしています。

私の載せたロジックで、配列で作成したパネルのどれをクリックしてもイベントは取得されるのでしょうか?

投稿日時 - 2003-05-23 09:13:51

ANo.1

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

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

回答(1)

あなたにオススメの質問