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