リストを表示しよう


複数項目の選択

チョイスに似たコンポーネントでリストというものがあります
チョイスと違う点は、テキストエリアのような長方形に表示されるということと
指定によっては複数選択することも可能であるという点です

リストの生成にはjava.awt.Listクラスを使用します
次のコンストラクタが用意されています

public List()
public List( int rows )
public List( int rows, boolean multipleMode )

リストは、指定範囲より項目が増えた場合は自動的にスクロールバーが付きます
rowsには表示する項目数を指定します。この行数が表示できるサイズで生成されます
multipleModeをtrueにすると、複数の項目を選択することができるようになります
これを明示しなかった場合かfalseを指定すると、単一の項目しか選択できません

リスナはaddActionListener()メソッドとaddItemListener()があります
アクションリスナは、項目を選択した上でダブルクリックをしたときに
アイテムリスナはアイテムに変化が生じたときに呼び出されます

選択されているインデックスを得るにはgetSelectedIndex()メソッドを、
ただし、複数の選択を得る場合はgetSelectedIndexes()メソッドを使用します

public synchronized int getSelectedIndex()
public synchronized int[] getSelectedIndexes()

getSelectedIndex()で複数選択されていた場合は-1を返します
setSelectedIndexed()では、選択されている各インデックスを配列で返します
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

/*	<applet code="App38.class" width="300"height="300">
 	</applet>
*/

public class App38 extends Applet implements ActionListener , ItemListener {
	List lst[] = new List[2];
	public void init() {
		setBackground(Color.white);
		for (int i = 0 ; i < 2 ; i++) {
			lst[i] = (List)add(new List(5));
			lst[i].add("RENA");
			lst[i].add("YUKI");
			lst[i].add("MIMI");
		}
		lst[0].addActionListener(this);
		lst[1].addItemListener(this);
	}
	public void actionPerformed(ActionEvent e) {
		changeBackground(lst[0]);
	}
	public void itemStateChanged(ItemEvent e) {
		changeBackground(lst[1]);
	}
	void changeBackground(List obj) {
		if (obj.getSelectedIndex() == 0) setBackground(Color.red);
		if (obj.getSelectedIndex() == 1) setBackground(Color.blue);
		if (obj.getSelectedIndex() == 2) setBackground(Color.orange);
	}
}
アプレット

それぞれ、違うイベントリスナで登録しています
見た目は違いますが、複数選択にしない場合であれば
その機能のほとんどはチョイスと同じです

複数選択の場合は、配列の操作をしなければなりません
しかし、それ以外の機能は同じです

チョイス同様に、Listクラスにも項目の削除をするremove()
全てをクリアするremobeAll()メソッド、項目を選択するsekect()などがあります



前のページへ戻る次のページへ