SwingでGUIを使用する

JavaでももちろんGUIを使用できます。

JavaでGUIを使うためには、Swingと呼ばれるライブラリを使用します。

ここでは、Swingを使用したGUIプログラムの作り方を解説します。

アプレットを準備する

Swingを使用するために、アプレットをHTMLファイルに埋め込みます。

これにより、HTMLファイルを起動するとアプレットが立ち上がり、プログラムがスタートします。

HTMLファイルは以下のとおりです。

名前はSample.htmlとします。

<html>
<head>
<title>タイトル</title>
</head>
<body>
<center>
<applet code="sample.class" width="200" height="200">
</applet>
</center>
</body>
</html>

Javaファイルをつくる

では、本題のJavaファイルをつくっていきます。

ここでは、

  1. ラベル
  2. ボタン
  3. スライダ
  4. テキストフィールド

を使ったGUIを作成します。

以下のようにJavaファイルをつくってコンパイルしましょう。

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

public class sample extends JApplet
{
	private JLabel lb;
	private JButton bt;
	private JSlider slider;
	private JTextField tf;

	public void init()
	{
		//コンポーネントの作成
		lb=new JLabel("ラベルです");
		bt=new JButton("ボタン");
		slider=new JSlider();
		tf=new JTextField();

		//スライダを縦方向へ設定
		slider.setOrientation(JSlider.VERTICAL);

		//コンテナへの追加
		add(lb,BorderLayout.NORTH);
		add(bt,BorderLayout.SOUTH);
		add(slider,BorderLayout.WEST);
		add(tf,BorderLayout.CENTER);

		//リスナの登録
		bt.addActionListener(new SampleActionListener());
		slider.addChangeListener(new SampleChangeListener());
		tf.addActionListener(new Sample2ActionListener());
	}

	//ボタンを押した際のイベント
	class SampleActionListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			lb.setText("ボタンが押されました。");
		}
	}

	//スライダの値が変わった際のイベント
	class SampleChangeListener implements ChangeListener
	{
		public void stateChanged(ChangeEvent e)
		{
			JSlider sldr=(JSlider)e.getSource();
			int value=(int)sldr.getValue();
			lb.setText("値:"+value);
		}
	}

	//テキストフィールドでEnterを押された際のイベント
	class Sample2ActionListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			JTextField tmp=(JTextField) e.getSource();
			lb.setText("値:"+tmp.getText());
		}
	}
}

プログラムでは、

  1. コンポーネントの準備
  2. コンポーネントの設定
  3. 画面へコンポーネントを表示
  4. イベントの登録

という流れになっています。ここでは、コンポーネントの設定で、スライダを縦向きにしてます。

また、画面へ表示させる際は

  1. SOUTH:下
  2. EAST:右
  3. WEST:左
  4. NORTH:上
  5. CENTER:真ん中

により配置する場所を設定します。

リスナの登録として

  1. ボタンを押した際の操作
  2. スライダの値が変化した際の操作
  3. テキストフィールドでEnterが押された際の操作

を設定しています。ボタンを押した際はラベルに「ボタンが押されました」と表示させています。

そして、スライダの値が変化したら、ラベルに値を表示させます。

テキストフィールドでEnterが押されると、テキストフィールドの値をラベルに表示させます。

実行結果

javac sample.java

でコンパイルして、

appletviewer sample.html

で実行すると以下のように表示され、

実行結果

スライダを変更すると

スライダ

となり、テキストフィールドで入力してEnterをおすと

テキストフィールド

となり、ボタンを押すと

ボタン

が表示されます。

著者:安井 真人(やすい まさと)