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

解決済みの質問

JAVA Applet for文でのまわし方

JAVA Appletでボタンを押すと色々反応するプログラムを作っています。for文を使わず長々としたプログラムだとコンパイルでき実行できますが、for文を使って簡潔にまとめる表記の仕方がどうもよくわかりません。

/* リスナの登録 */
bt[0].addActionListener(new testActionListener0());
bt[1].addActionListener(new testActionListener1());
bt[2].addActionListener(new testActionListener2());
bt[3].addActionListener(new testActionListener3());
bt[4].addActionListener(new testActionListener4());
bt[5].addActionListener(new testActionListener5());
bt[6].addActionListener(new testActionListener6());
bt[7].addActionListener(new testActionListener7());
bt[8].addActionListener(new testActionListener8());

上記はfor文でまとめれると思うのですが、どのように表記すれば良いのかわかりません。
for文でくくって、
bt[i].addActionListener~~
とすればそれぞれbt[i]が反応するのはわかりますが、その後の、
~~(new testActionListener○());
の○の部分にiを入れる場合の表記の仕方がわかりません。もしくはiを入れる事はできないのでしょうか?
※このあとそれぞれのtestActionListener(0~8)のリスナクラスが呼び出されます。


説明が足りないのであれば回答の後、補足しますm(_ _)m

投稿日時 - 2006-06-16 04:30:14

QNo.2218570

困ってます

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

まあ一応 nonakada 氏の書いたようにリフレクションを使えばできない訳ではありませんが、普通はこんなことでわざわざこういう裏技のようなやり方を使うことはしません。

確かにクラスの名前が連番になっているのでループを使って簡略化できそうだと思われるのも解るのですが、実際にはこれはたまたま「人間にとって」各クラスの名前が似ているというだけで、「コンピュータにとっては」単にたくさんクラスがあるというだけでしかないのです。

従って、ここではループを使わずに一つ一つやるべきだと私は思います。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1274344

投稿日時 - 2006-06-16 13:39:24

お礼

ご返答ありがとうございます。
わかりやすい説明でとてもよく理解できました。for文を使わず一つ一つやってみようかと思います。

投稿日時 - 2006-06-16 15:49:41

ANo.3

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

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

回答(3)

ANo.2

私も自信はありませんが

bt[i].addActionListener(Class.forName("testActionListener" + i).newInstance());

じゃできないですかね?

もちろんfor文で・・・

投稿日時 - 2006-06-16 08:47:08

お礼

ご返答ありがとうございます。
上の通りためしてみましたが、コンパイルできませんでした。

投稿日時 - 2006-06-16 15:47:49

ANo.1

ちょっと自信はありませんができないと思いますよ

投稿日時 - 2006-06-16 06:52:41

お礼

ご返答ありがとうございます。
Java初心者の私にとって、できる事とできない事がまだ区別がつかないので参考になりました。

投稿日時 - 2006-06-16 15:41:42

あなたにオススメの質問