GUIコンポーネントを用いたイベント処理

では、JavaGUIの醍醐味であるGUIコンポーネント(GUI部品)を使ってイベント処理について説明する。
今回は『ボタン』『ラジオボタン』『メニューバー』『メニュ−』『ポップアップメニュー』『テキストフィールド』 『テキストエリア』の数種類だけを紹介していく。では早速JavaGUIの基本となる部分の学習を進めていく。



ボタン

ここではGUIコンポーネントのボタンについて説明する。
まずは基本的なボタンを作るためにイベント処理のない『OK』を作ってみる。
OKという文字を表示させるために10行目の「JButton b1 = new JButton("OK");」を記述する。
11行目でb1という変数名をaddActionListenerメソッドでボタンのインターフェースであるアクションリスナーに登録し、
7行目のgetContentPaneメソッド(コンテントペイン)にb1の値を返し、ウィンドウ上にボタンを配置するようになっている。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class JButtonTest extends JFrame implements ActionListener {
	JButtonTest() {
		getContentPane().setLayout(new FlowLayout());

		//ボタンの作成
		JButton b1 = new JButton("OK");
		b1.addActionListener(this);
		getContentPane().add(b1);

		//クローズボタンを押したときの処理
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//フレームのタイトル・サイズ
		setTitle("JButtonTest");
		setSize(200, 100);
		setVisible(true);
	}
	public void actionPerformed(ActionEvent e) {
		System.out.println("OK");
	}
	public static void main(String[] args) {
		new JButtonTest();
	}
 }
}

このプログラムの実行結果は以下のようになる。



ここではただの「OK」ボタンを作っただけだが、このボタンに処理を入れることにより、「Clear」や「Exit」といった様々なボタンを作ることが可能になる。



ラジオボタン

ここではGUIコンポーネントのラジオボタンについて説明する。
このラジオボタンは、JRadioButtonというクラス名である。
AWTでは「Checkbox」と「CheckBoxGroup」の2つを使用するが、Swingでは「JRadioButton」と「ButtonGroup」を使用する。
プログラムの書き方はボタンと同じ宣言の仕方でよいのだが、ラジオボタンの特徴として複数の選択回答の中から1つを選択するものなので 2つ以上の選択肢が必要となる。 まずボタンを作る必要があるのでボタンを作成したときと同じように2つラジオボタンを作る。

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

class JRadioButtonTest extends JFrame implements ActionListener {
	JRadioButtonTest() {
		getContentPane().setLayout(new FlowLayout());
		
		//2つのラジオボタンを作成
		JRadioButton rb1 = new JRadioButton("On", true);
		JRadioButton rb2 = new JRadioButton("Off");
		rb1.addActionListener(this);
		rb2.addActionListener(this);
		getContentPane().add(rb1);
		getContentPane().add(rb2);

		//ボタンそれぞれをグループ化
		ButtonGroup bg = new ButtonGroup();
		bg.add(rb1);
		bg.add(rb2);

		//フレームのタイトル・サイズ・クローズの処理
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setTitle("JRadioButtonTest");
		setSize(200, 100);
		setVisible(true);
	}
	
	//
	public void stateChanged(ChangeEvent e) {
		JRadioButton cb = (JRadioButton)e.getSource();
		if (cb.isSelected()) {
			cb.setText("On");
		} else {
			cb.setText("Off");
		}
	}
	public static void main(String[] args) {
		new JRadioButtonTest();
	}
}

このプログラムの実行結果は以下になる。