2009年5月4日月曜日

Java AWT CheckBoxコンポーネント

チェックボックスの選択変更イベントはItemListenerクラスのItemStateChangedメソッドで処理します。

package MyPackage1;

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

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

Checkbox chk1;
Checkbox chk2;
Checkbox chk3;
Label lbl1;
Label lbl2;
Label lbl3;
Panel pnl1;
Panel pnl2;

/*
* コンストラクタ
*/
public CheckBoxSample(){
//フレームを作成します。
Frame frm = new Frame("CheckBoxSample");
//フレームサイズを指定します。
frm.setSize(300,300);
//無名クラスを使用してフレームを閉じます。
frm.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0);
}
});
//チェックボックスを作成します。
chk1 = new Checkbox("Blue");
chk2 = new Checkbox("Red");
chk3 = new Checkbox("Green");
//チェックボックスにItemListenerを追加します。
chk1.addItemListener(new chk1ItemAdapter());
chk2.addItemListener(new chk2ItemAdapter());
chk3.addItemListener(new chk3ItemAdapter());
//パネルを作成します。
pnl1 = new Panel();
pnl1.setLayout(new GridLayout(1,3));
//パネルにコンポーネントを追加します。
pnl1.add(chk1);
pnl1.add(chk2);
pnl1.add(chk3);
//ラベルを作成します。
lbl1 = new Label();
lbl2 = new Label();
lbl3 = new Label();
//パネルを作成します。
pnl2 = new Panel();
pnl2.setLayout(new GridLayout(1,3));
//パネルにコンポーネントを追加します。
pnl2.add(lbl1);
pnl2.add(lbl2);
pnl2.add(lbl3);
//
frm.setLayout(new GridLayout(2,1));
frm.add(pnl1);
frm.add(pnl2);
//
frm.setVisible(true);
}
/*
* chk1ItemListener
*/
private class chk1ItemAdapter implements ItemListener{
@Override
public void itemStateChanged(ItemEvent arg0) {
if (chk1.getState()==true){
lbl1.setText(chk1.getLabel());
}else{
lbl1.setText("");
}   
}
}
/*
* chk2ItemListener
*/
private class chk2ItemAdapter implements ItemListener{
@Override
public void itemStateChanged(ItemEvent arg0) {
if (chk2.getState()==true){
lbl2.setText(chk2.getLabel());
}else{
lbl2.setText("");
}   
}
}
/*
* chk3ItemListener
*/
private class chk3ItemAdapter implements ItemListener{
@Override
public void itemStateChanged(ItemEvent arg0) {
if (chk3.getState()==true){
lbl3.setText(chk3.getLabel());
}else{
lbl3.setText("");
}   
}
}
}


0 件のコメント: