| 10. Checkbox/RadioButton |
選択用のコンポーネントを紹介します。ここでは基本的な使い方のみ紹介します。そのほかのコンストラクタやメソッド、フィールドについては APIドキュメントを参照してください。
| (1) CheckBox は複数選択 |
Checkbox cb1 = new Checkbox("赤");
Checkbox cb2 = new Checkbox("青");
Checkbox cb3 = new Checkbox("黄");
チェックボックスの状態を調べたり、ラベルを調べるには次のメソッドを使います。
boolean getState()
チェックされていれば true、チェックされていなければ false を返す
void setState(boolean state)
チェックボックスの選択状態を設定します
String getLabel()
チェックボックスについているラベルを返します
チェックボックスでは、チェックしたときに ItemEvent が発生します。新登場のイベントですが、ActionEvent とイベント処理の方法は同じです。
| イベントの種類 | チェックしたとき ItemEvent 発生 |
| イベント処理用メソッド | ItemListener インタフェース内に定義されている void itemStateChanged(ItemEvent e) |
| リスナ登録用メソッド | void addItemListener(ItemListener obj) |
// CheckboxTest.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class CheckboxTest extends Applet implements ItemListener {
Checkbox cb[];
public void init() {
// コンポーネント作成
cb = new Checkbox[3]; // Checkbox型で配列の領域確保
cb[0] = new Checkbox("赤"); // オブジェクト生成
cb[1] = new Checkbox("青");
cb[2] = new Checkbox("黄");
// レイアウト設定
setLayout(new FlowLayout());
// コンポーネント追加
add(cb[0]);
add(cb[1]);
add(cb[2]);
// リスナ登録
cb[0].addItemListener(this);
cb[1].addItemListener(this);
cb[2].addItemListener(this);
}
public void itemStateChanged(ItemEvent e) {
for (int i=0;i<cb.length;i++) {
if ( cb[i].getState() ) {
// Checkbox クラスの getLabel() でラベルを獲得します
System.out.print( cb[i].getLabel()+" " );
}
}
System.out.println("を選択しました");
}
}
|
<APPLET CODE=CheckboxTest.class width=200 height=100> </APPLET> |
| (2) ラジオボタンの代用 |
Checkbox(String label, boolean state, CheckboxGroup group)
3番目の引数にある CheckboxGroup というクラスがグループ化するためのものです。CheckboxGroup クラスは java.awt パッケージのクラスです。グループを作るには
CheckboxGroup group1 = new CheckboxGroup();
のように作ります。これを Checkbox クラスのコンストラクタに指定すると、チェックボックスをグループ化する事ができます。
チェックの状態やイベント処理については Checkbox と全く同じです。
RadioTest.java
// RadioTest.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class RadioTest extends Applet implements ItemListener {
Checkbox cb[];
public void init() {
// グループ作成
CheckboxGroup cbg = new CheckboxGroup();
// コンポーネント作成
cb = new Checkbox[3]; // Checkbox型で配列の領域確保
cb[0] = new Checkbox("赤",true,cbg); // オブジェクト生成
cb[1] = new Checkbox("青",false,cbg);
cb[2] = new Checkbox("黄",false,cbg);
// レイアウト設定
setLayout(new FlowLayout());
// コンポーネント追加
add(cb[0]);
add(cb[1]);
add(cb[2]);
// リスナ登録
cb[0].addItemListener(this);
cb[1].addItemListener(this);
cb[2].addItemListener(this);
}
public void itemStateChanged(ItemEvent e) {
Checkbox obj = (Checkbox)e.getSource();
String color = obj.getLabel();
// setBackground()で背景色変更
if ( color.equals("赤") ) setBackground(Color.red);
if ( color.equals("青") ) setBackground(Color.blue);
if ( color.equals("黄") ) setBackground(Color.yellow);
}
}
|
<APPLET CODE=RadioTest.class width=300 height=200> </APPLET> |