プロが教えるわが家の防犯対策術!

50音のリストから選択したタイトルの画像を表示するようなプログラムを作ろうと思っているのですが、ItemListenerの2種類以上の使い方?が分かりません。
左側のChoiceからListの内容は書き換えることが出来たのですが、真ん中のListから右のListを書き換え、更には右のListから下部へ画像を表示させたいのです。
この場合どのように記入すればいいのか教えてください。お願いします。


以下拙いですが自分の書いた部分です

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Test extends Applet implements ItemListener{
Panel p[]=new Panel[1];
Choice c1;
String s[]={"あ","い","う","え","お","か","き","く","け","こ",
"さ","し","す","せ","そ","た","ち","つ","て","と",
"な","に","ぬ","ね","の","は","ひ","ふ","へ","ほ",
"ま","み","む","め","も","や","ゆ","よ","","",
"ら","り","る","れ","ろ","わ","","","","",};

List lst1,lst2;
int i;

public void init() {
p[0]=new Panel(new GridLayout(1,3));
c1=(Choice)p[0].add(new Choice());
for (i=0;i<50;i=i+5)
c1.add(s[i]+"行");
c1.addItemListener(this);

lst1=(List)p[0].add(new List(5));
lst1.add(s[0]);
lst1.add(s[1]);
lst1.add(s[2]);
lst1.add(s[3]);
lst1.add(s[4]);
lst1.addItemListener(this);

lst2=(List)p[0].add(new List(5));
lst2.addItemListener(this);
add(p[0]);
}

public void itemStateChanged(ItemEvent e){
Choice c1=(Choice)e.getSource();
String str=(String)c1.getSelectedItem();
if(str.equals("あ行")){
lst1.removeAll();
for(i=0;i<5;i++){
lst1.add(s[i]);
}
lst2.removeAll();
}
else if(str.equals("か行")){
lst1.removeAll();
for(i=5;i<10;i++){
lst1.add(s[i]);
}
lst2.removeAll();
}
以下わ行まで書いてあります
}
public void destroy() {
}
}

A 回答 (2件)

AWTは全然さわったことが無いのですが、やり方は複数あるようです。



itemStateChanged()の中でイベントの発生元を判別し処理を分岐する
Object source = e.getSource();
if (source == c1) {
 //処理
} else if (source == lst1) {
 //処理
}

インナークラスを利用する
private C1Listener implements ItemListener {
 public void itemStateChanged(ItemEvent e) {
  //処理
 }
}
c1.addItemListener(new C1Listener());

匿名クラスを利用する
c1.addItemListener(new ItemListener() {
 public void itemStateChanged(ItemEvent e) {
  //処理
 }
}

などです。
参考URLなども読んで見て、ご自身に合ったやり方を選べばいいと思います。

参考URL:http://nextindex.jp/java/applet/awt/eventSummary …
    • good
    • 0
この回答へのお礼

迅速な回答を頂いたにもかかわらずお礼のほう遅れて申し訳ありません。
参考URL込みでとても分かりやすく、悩んでいた部分が解決しました!
本当にありがとうございました。

お礼日時:2010/12/21 05:51

Appletを継承したクラス(今回はTestクラス)に


Listenerをimplementsするのではなく、
画面の各部品にListenerを実装するようにすればいいのよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!