解答例 - 実習課題2 - 3.イベント・ハンドラ
(実習課題2)
以下のサンプルプログラムを作成しなさい。
- フレームに含まれるコンポーネントはチェックボックス(JCheckBox)3つとラベル(JLabel)1つ。配置は任意。
- ラベルにはその時点で選択されているチェックボックスの個数を表示する。
- チェックボックスの状態が変わる毎に、ラベルの表示を切り替える。
- (ヒント)「java.awt.event.ItemListener」を使用する。
- (ヒント)「javax.swing.JCheckBox」の「isSelected」メソッドを使用する。
解答例
package com.techscore.ui.chapter3.exercise2;
/**
* SampleFrame.java
* TECHSCORE Javaユーザインタフェース3章 実習課題2
*
* Copyright (c) 2004 Four-Dimensional Data, Inc.
*/
import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class SampleFrame extends JFrame implements ItemListener {
private JLabel label;
private JCheckBox east;
private JCheckBox center;
private JCheckBox west;
public SampleFrame() {
super("SampleFrame");
setDefaultCloseOperation(EXIT_ON_CLOSE);
label = new JLabel("label");
getContentPane().add(label, BorderLayout.NORTH);
//ボタンをフレームのContent Paneに追加
east = new JCheckBox("right");
getContentPane().add(east, BorderLayout.EAST);
east.addItemListener(this);
center = new JCheckBox("center");
getContentPane().add(center, BorderLayout.CENTER);
center.addItemListener(this);
west = new JCheckBox("left");
getContentPane().add(west, BorderLayout.WEST);
west.addItemListener(this);
pack();
}
public void itemStateChanged(ItemEvent event) {
//選択されているボックスの数を数える
int i = 0;
if (east.isSelected()) {
i++;
}
if (center.isSelected()) {
i++;
}
if (west.isSelected()) {
i++;
}
//表示
label.setText(i + " box(es) is/are selected!");
}
public static void main(String args[]) {
new SampleFrame().setVisible(true);
}
}

