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 |
|
このサンプルではボタンを配置しましたが、押しても何も変化しません。イベント処理を実装すれば、ボタンを押すなどのユーザ操作はイベントとしてプログラムを駆動させるようにすることが出来ます。
もう一つ中間コンテナを追加してみましょう。中間コンテナ 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
![]() |
| 図:実行結果 |