チェックボックスのJCheckBox
では、その他のコンポーネントについても使い方を整理していきましょう。まず、チェックボックスからです。Swingでは、「JCheckBox」というクラスとして用意されています。これも、基本的にはAWTのCheckboxとほぼ同じです。
package jp.allabout.java;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class SampleApp extends JFrame {
private static final long serialVersionUID = 1L;
private JLabel label;
private JCheckBox check;
public SampleApp(){
this.setSize(new Dimension(300,200));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(null);
label = new JLabel("This is Sample.");
label.setBounds(new Rectangle(20,20,200,20));
label.setFont(new Font("Serif",Font.BOLD,24));
this.add(label);
check = new JCheckBox("CheckBox");
check.setBounds(new Rectangle(20,50,200,20));
this.add(check);
check.addChangeListener(new ChangeListener(){
@Override
public void stateChanged(ChangeEvent e) {
label.setText(Boolean.toString(check.isSelected()));
}
});
}
public static void main(String[] args) {
new SampleApp().setVisible(true);
}
}
チェックボックスをクリックするとチェックの状態が表示される。 |
ここではチェックボックスを1つ組み込み、チェックをON/OFFするとチェックの状態を表示するようにしてみました。チェックの状態は、JCheckBoxのisSelectedで得ることができます。ここで得られたboolean値を、Boolean.toStringでテキストに変換してlabel.setTextしています。
ここで注意しておきたいのは、組み込んでいるChangeListenerです。AWTのCheckboxクラスでは、操作した際のイベントはjava.awt.eventパッケージのItemListenerというものが用いられていました。が、JCheckBoxでは、javax.swing.eventパッケージに新たに用意されたChangeListenerを使っているのです。コンポーネントそのものは似たようなものなのですが、このように部分的に「Swingから用意された新しい機能」を使うようになっていることがあるのです。
Swingから新たに用意されたイベント関係のクラスは、javax.swing.eventパッケージにまとめられていますので、一度、Javadocのリファレンスなどでこのパッケージにどんなものが用意されているか見ておくとよいでしょう。