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
![]() |
図:実行結果 |