- 6.1. javax.swing.JPanel
- 6.2. javax.swing.Box
- 6.3. javax.swing.JSplitPane
6.2. javax.swing.Box
「Box」は「BoxLayout」をレイアウト・マネージャーとするコンテナ・コンポーネントです。使用するにはまず、以下のどちらかの方法で「Box」のインスタンスを作成します。
Box box=new Box(BoxLayout.Y_AXIS); Box box=Box.createVerticalBox();
これは縦方向にコンポーネントを詰めていく「Box」ですが、どちらの方法でインスタンスを作成しても同じ物ができます。
コンポーネントの追加は「JPanel」と同じようにします。
box.add(new JLabel("label"));
最後に「Box」のインスタンスを、フレームや他のコンテナに追加してやれば良いでしょう。
他に「Box」は、コンポーネント間の隙間を埋めるコンポーネントを作る、便利なメソッドを提供します。それらには「glue(接着剤)」「strut(柱)」「rigid area(固定領域)」の3種類あります。
「glue」はコンポーネントの表示に最低限必要な領域よりも、大きな領域が割りあてられたとき(領域が余った場合)に、それをどこに割りあてるか指定する時に使います。「JFrame」の「pack」メソッドを使用しているときは効果が出ませんが、ウィンドウサイズを大きくすると「glue」のあるところにあまったスペースが割りあてられるようになります。「glue」を追加するときは以下のようにします。
Component glue=Box.createGlue(); box.add(glue);
縦方向だけの「glue」の場合は「createVerticalGlue()」メソッドを、横方向だけの場合は「createHorizontalGlue()」メソッドを使用します。
「strut」および「rigid area」は共にスペースの大きさを指定するものですが、「strut」は片方向(縦または横のどちらか)のサイズを指定するのに対して、「rigid area」は両方向のサイズを指定します。「strut」「rigid area」の作成方法は以下の通りです。
Component vStrut=Box.createVerticalStrut(5); Component hStrut=Box.createHorizontalStrut(10); Component rigidArea=Box.createRigidArea(new Dimension(10,10));
それぞれコンテナに追加して使用します。「Box」以外に使用しても構いません。
(実習課題2)
以下のプログラムを作成しなさい。
- ウィンドウ(JFrame)に直接配置されるコンポーネントは縦方向の「Box」1つ。
- 「Box」の中にボタンを4つ配置する事。ボタンのテキストなどは任意。
- 各ボタンの間には「glue」をはさむ事。また1番上のボタンの上、と1番下のボタンの下にはサイズ5の縦方向「strut」を入れる事。
ウィンドウのサイズを変化させて、「glue」および「strut」の効果を確認する事。