| 11. Choice / List |
リストコンポーネントを紹介します。ここでは基本的な使い方のみ紹介します。そのほかのコンストラクタやメソッド、フィールドについては API ドキュメントを参照してください。
| (1) リストの中から1つ選択するのが Choice |
Choice choice = new Choice( );
次に Choice クラスの add(String item) または addItem(String item) という形式のメソッドを使って、リストの項目を作ります。
choice.add("東京");
choice.add("大阪");
choice.add("名古屋");
選択されているもの調べたりするメソッドは以下の通りです。
String getItem(int index)
リストの index 番目のラベルを返します。
int getSelectedIndex( )
何番目の項目が選択されているかを返します。先頭は 0 です。
String getSelectedItem( )
選択されている項目のラベル(項目名)を返します。
void select(int index)
リストの index 番目の項目を選択状態にします。
void select(String item)
文字列 item の項目がリスト中にあれば選択状態にします。
イベントに関する情報は以下の通りです。
| イベントの種類 | 違う項目を選択したとき ItemEvent 発生 |
| イベント処理用メソッド | ItemListener インタフェース内に定義されている void itemStateChanged(ItemEvent e) |
| リスナ登録用メソッド | void addItemListener(ItemListener obj) |
// ChoiceTest.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class ChoiceTest extends Applet
implements ItemListener, ActionListener {
Choice choice;
public void init() {
// コンポーネント作成
choice = new Choice();
choice.add("東京");
choice.add("大阪");
choice.add("名古屋");
Button check = new Button("確認");
// レイアウト設定
setLayout(new FlowLayout());
// コンポーネント追加
add(choice);
add(check);
// リスナ登録
choice.addItemListener(this);
check.addActionListener(this);
}
public void itemStateChanged(ItemEvent e) {
checkSelectedItem();
}
public void actionPerformed(ActionEvent e) {
checkSelectedItem();
}
void checkSelectedItem() {
int index = choice.getSelectedIndex();
String item = choice.getSelectedItem();
System.out.println( index+" 番目の "+ item + " が選択されました" );
}
}
|
<APPLET CODE=ChoiceTest.class width=200 height=100> </APPLET> |
| (2) List による複数選択 |
List list = new List(int row,boolean multiple);
一つ目の引数では何行分表示するようにするか、2つ目の引数は、単一項目選択の場合は false、複数選択可能にする場合は true にします。
リストの項目を追加するには Choice と同じように add( ) メソッドで行います。
list.add("東京");
list.add("大阪");
list.add("名古屋");
選択されているもの調べたりするメソッドは以下の通りです。
String getItem(int index)
リストの index 番目のラベルを返します。
int getSelectedIndex( )
何番目の項目が選択されているかを返します。先頭は 0 です。
int[ ] getSelectedIndexes( )
複数選択の場合、選択されている項目のインデックスを配列で返します。
String getSelectedItem( )
選択されている項目のラベル(項目名)を返します。
String [] getSelectedItems( )
複数選択の場合、選択されている項目のラベル(項目名)を配列で返します。
void select(int index)
リストの index 番目の項目を選択状態にします。
void deselect(int index)
リストの index 番目の項目の選択状態を解除します。
List では2つのイベントが発生します。1つは項目を選択したときの Item イベント。もう1つは項目をダブルクリックしたときの ActionEvent です。
| イベントの種類 | 違う項目を選択したとき ItemEvent 発生 |
| イベント処理用メソッド | ItemListener インタフェース内に定義されている void itemStateChanged(ItemEvent e) |
| リスナ登録用メソッド | void addItemListener(ItemListener obj) |
| イベントの種類 | ダブルクリックしたとき ActionEvent 発生 |
| イベント処理用メソッド | ActionListener インタフェース内に定義されている void actionPerformed(ActionEvent e) |
| リスナ登録用メソッド | void addActionListener(ActionListener obj) |
// ListTest.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class ListTest extends Applet
implements ItemListener, ActionListener {
List list;
public void init() {
// コンポーネント作成
list = new List(3,true);
list.add("東京");
list.add("大阪");
list.add("名古屋");
list.add("福岡");
list.add("北海道");
list.add("仙台");
list.add("富山");
// レイアウト設定
setLayout(new FlowLayout());
// コンポーネント追加
add(list);
// リスナ登録
list.addItemListener(this);
list.addActionListener(this);
}
public void itemStateChanged(ItemEvent e) {
int index[] = list.getSelectedIndexes();
for (int i=0;i<index.length;i++) {
System.out.print( list.getItem( index[i] ) + " " );
}
if ( index.length!=0 )
System.out.println("が選択されています");
}
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand()+" をダブルクリック");
}
}
|
<APPLET CODE=ListTest.class width=200 height=200> </APPLET> |
