チョイス
コンボボックスを作る
チョイスとは、Windowsのコントロールで言うコンボボックスです
クリックすると必要な項目が一覧され、そのうちから一つを選択することができます
チョイスは、選択一覧の表示にコンポーネントの場所を取りません
非常にコンパクトで、直感的に操作しやすいので便利です
チョイスを生成するにはjava.awt.Choiceクラスを使用します
コンストラクタはパラメータを受け取りません
public Choice()
初期段階で、チョイスのリストは空です
これに選択メニュー項目を追加するにはadd()メソッドかaddItem()メソッドを指定します
public synchronized void add( String item )
public synchronized void addItem( String item )
itemには、追加する項目の文字列を指定します
両方とも得られる結果は同じです
イベントリスナを追加するには次のメソッドを使用します
public synchronized void addItemListener( ItemListener lis )
ItemListenerは前回やったので説明不要ですね
ChoiceクラスもItemSelectableインターフェイスをインプリメントしています
選択されているメニューなどの情報を得るには、やはりitemStateChanged()メソッドの
ItemEventクラスのgetItemselectable()でChoiceにキャストしたオブジェクトから得ます
Choiceクラスのメソッドで、選択されているメニューのインデックスを得るにはgetSelectedIndex()メソッドを使用します
インデックスはメニューの一番上を0として、一行下がるごとに1づつ増えます
現在選択されているメニューの文字列表現を得るにはgetSelectedItem()メソッドを、
また、指定インデックスの文字列を得るにはgetItem()メソッドを使用します
public int getSelectedIndex()
public synchronized String getSelectedItem()
public String getItem( int index )
それぞれ、要求したデータを返します
getItem()のindexには、メニューのインデックスを指定します
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
/* <applet code="App33.class" width="300"height="300">
</applet>
*/
public class App33 extends Applet implements ItemListener {
public void init() {
setBackground(Color.white);
Choice cho = (Choice)add(new Choice());
cho.add("RENA");
cho.addItem("YUKI");
cho.add("MIMI");
cho.addItemListener(this);
}
public void itemStateChanged(ItemEvent e) {
Choice cho = (Choice)e.getItemSelectable();
if (cho.getSelectedIndex() == 0) setBackground(Color.red);
if (cho.getSelectedIndex() == 1) setBackground(Color.blue);
if (cho.getSelectedIndex() == 2) setBackground(Color.orange);
}
}
もちろん、メニューの内容を削除したり
プログラム側で意図的に選択させたりすることも可能です
指定位置のメニューの削除にはChoiceクラスのremove()メソッドを、
全てをクリアする場合はremoveAll()メソッドを指定します
public synchronized void remove( String item )
public synchronized void remove( int position )
public synchronized void removeAll()
itemには、削除したいメニューの文字列表現を指定します
指定文字列と最初に一致したメニューを削除します
positionは、削除したいメニューのインデックス番号を指定します
指定メニューを意図的に選択させる場合はselect()メソッドを使用します
public synchronized void select( int pos )
public synchronized void select( String str )
パラメータの意味はremove()同様に、インデックス番号か文字列表現かです
チョイスのメニューが空の状態で削除しようとすると例外が発生します
そこで、チョイスに選択メニューがない場合は削除する処理をしないようにする必要があります
そのためにはgetItemCount()メソッドで、選択メニューの項目数を得ます
public int getItemCount()
これらの機能を利用すれば、自由にチョイスの項目を
プログラムの中で動的に変化させることができます
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
/* <applet code="App34.class" width="300"height="300">
</applet>
*/
public class App34 extends Applet implements ActionListener {
Choice cho;
public void init() {
setBackground(Color.white);
cho = (Choice)add(new Choice());
cho.add("RENA");
cho.addItem("YUKI");
cho.add("MIMI");
Button but1 = (Button)add(new Button("削除"));
Button but2 = (Button)add(new Button("クリア"));
but1.addActionListener(this);
but2.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (cho.getItemCount() != 0) {
if (e.getActionCommand() == "削除") cho.remove(cho.getSelectedIndex());
if (e.getActionCommand() == "クリア") cho.removeAll();
}
}
}