中間コンテナ

last modified: Jun./29th/2002; Since: Jan./22nd/2002

ここでは、中間コンテナを実装してみます。元にするソースは HelloSwing.java を使います。

IntermediateDemo.java:

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

public class IntermediateDemo {
	public static void main(String[] args) {

		// JFrame のインスタンス化
		JFrame frame = new JFrame("HelloSwing");

		//JPanel (中間コンテナ)のインスタンス化
		JPanel panel = new JPanel();

		// JButton のインスタンス化
		JButton button1 = new JButton("button1");
		// JLabel のインスタンス化
		JLabel label1 = new JLabel("label1");
		// JButton のインスタンス化
		JButton button2 = new JButton("button2");
		// JLabel のインスタンス化
		JLabel label2 = new JLabel("label2");

		//JPanel にコンポーネントを配置
		panel.setLayout(new BorderLayout());
		panel.add(button1, BorderLayout.NORTH);
		panel.add(button2, BorderLayout.SOUTH);
		panel.add(label1, BorderLayout.WEST);
		panel.add(label2, BorderLayout.EAST);

		// JFrame のコンテント・ペインの取得
		Container cont = frame.getContentPane();
		//コンテントペインに JPanel を配置
		cont.add(panel);

		// フレームのセットアップ
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setVisible(true);
	}
}

概要はソース中のコメントのとおりです。

JPanel 型オブジェクトに JLabel 型オブジェクトと JButton 型オブジェクトを貼り付け、それを JFrame 型オブジェクトのコンテント・ペインに貼り付けています。

特に、このサンプルでは BorderLayout を用いて、コンポーネントの貼り付け場所を指定していることに注意してください。これはレイアウト・マネージャと呼ばれるものの一つです。 BorderLayout は上(NORTH)、下(SOUTH)、左(WEST)、右(EAST)、中央(CENTER)を指定してコンポーネントを貼り付けます。今の場合は、上下にボタン、左右にラベルを貼り付けています。

コンパイルと実行
C:\java>javac IntermediateDemo.java

C:\java>java IntermediateDemo

IntermediateDemo.java の実行結果
図:実行結果

このサンプルではボタンを配置しましたが、押しても何も変化しません。イベント処理を実装すれば、ボタンを押すなどのユーザ操作はイベントとしてプログラムを駆動させるようにすることが出来ます。

中間コンテナの追加

もう一つ中間コンテナを追加してみましょう。中間コンテナ JScrollPane を通して、 JTextArea を見るように設定します。

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

public class TwoIntermediateDemo {
	public static void main(String[] args) {

		// JFrame のインスタンス化
		JFrame frame = new JFrame("HelloSwing");

		//JPanel (中間コンテナ)のインスタンス化
		JPanel panel = new JPanel();

		// JButton のインスタンス化
		JButton button1 = new JButton("button1");
		// JLabel のインスタンス化
		JLabel label1 = new JLabel("label1");
		// JButton のインスタンス化
		JButton button2 = new JButton("button2");
		// JLabel のインスタンス化
		JLabel label2 = new JLabel("label2");

		// JPanel にコンポーネントを配置
		// レイアウトマネージャを指定
		panel.setLayout(new BorderLayout());
		// コンポーネントを配置
		panel.add(button1, BorderLayout.NORTH);
		panel.add(button2, BorderLayout.SOUTH);
		panel.add(label1, BorderLayout.WEST);
		panel.add(label2, BorderLayout.EAST);

		// JTextArea のインスタンス化
		JTextArea textArea = new JTextArea("テキストが入力できます", 10, 30);
		// JScrollPane のインスタンス化
		JScrollPane scrollPane = new JScrollPane(textArea);
		scrollPane.setPreferredSize(new Dimension(400, 100));

		// JFrame のコンテント・ペインの取得
		Container cont = frame.getContentPane();
		// コンテントペインにレイアウトマネージャを指定
		cont.setLayout(new BorderLayout());
		// コンテントペインに JPanel を配置
		cont.add(panel, BorderLayout.NORTH);
		// コンテントペインに JScrollPane を配置
		cont.add(scrollPane, BorderLayout.CENTER);


		// フレームのセットアップ
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setVisible(true);
	}
}

コンパイルと実行:

C:\java>javac TwoIntermediateDemo.java

C:\java>java TwoIntermediateDemo

TwoIntermediateDemo.java の実行結果
図:実行結果


Copyright © 2001-2002 SUGAI, Manabu. All Rights Reserved.