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> |