2009年5月4日月曜日

Java AWT CheckboxGroupコンポーネント(ラジオボタン)

AWTにはラジオボタンのためのクラスはありません。
CheckboxクラスをCheckboxGroupクラスでグループ化すると、常に一つだけが選択された状態となるラジオボタンになります。

CheckboxGroup.getSelectedCheckboxメソッドでグループ内でチェックONのCheckboxを取得します。

package MyPackage1;

import java.awt.*;
import java.awt.event.*;

public class CheckboxGroupSample {
/*
* エントリポイント
*/
public static void main(String args[]){
new CheckboxGroupSample();
}

Frame frm;

Panel pnl1;
CheckboxGroup chkGroup;
Checkbox chk1;
Checkbox chk2;
Checkbox chk3;

Panel pnl2;
Label lbl1;

/*
* コンストラクタ
*/
public CheckboxGroupSample(){
//フレームを作成します。
frm = new Frame("CheckboxGroupSample");
//フレームのサイズを指定します。
frm.setSize(300,300);
//無名クラスを使用してフレームを閉じます。
frm.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0);
}
});
//チェックボックスグループを作成します。
chkGroup = new CheckboxGroup();
//チェックボックスを作成します。
chk1 = new Checkbox("Blue");
chk1.setCheckboxGroup(chkGroup);
chk1.setState(false);
chk2 = new Checkbox("Red",chkGroup,false);
chk3 = new Checkbox("Green",chkGroup,false);
//チェックボックスにItemListenerを追加します。
chk1.addItemListener(new chkItemAdapter());
chk2.addItemListener(new chkItemAdapter());
chk3.addItemListener(new chkItemAdapter());
//パネルを作成します。
pnl1 = new Panel();
pnl1.setLayout(new GridLayout(1,3));
//パネルにコンポーネントを追加します。
pnl1.add(chk1);
pnl1.add(chk2);
pnl1.add(chk3);
//ラベルを作成します。
lbl1 = new Label();
//フレームにコンポーネントを追加します。
frm.setLayout(new GridLayout(2,1));
frm.add(pnl1);
frm.add(lbl1);
//フレームを表示します。
frm.setVisible(true);
}

/*
* chkItemListener
*/
private class chkItemAdapter implements ItemListener{
@Override
public void itemStateChanged(ItemEvent arg0) {
Checkbox chkSelected = chkGroup.getSelectedCheckbox();
if (chkSelected != null ){
lbl1.setText("Selected:" + chkSelected.getLabel());
} 
}
}
}



0 件のコメント: