コンテナ内にコンポーネントを配置する |
すべてのコンテナは、デフォルトで、レイアウトマネージャをもっている。レイアウトマネージャとは LayoutManager インタフェースを実装するオブジェクトである。 Container のデフォルトのレイアウトマネージャがニーズにかなっていなければ、簡単に別のレイアウトマネージャに切り替えることができる。 AWT は、非常に単純なもの (FlowLayout とGridLayout) から、特別な用途のもの (BorderLayout とCardLayout) や、非常に高度な柔軟性をもつもの (GridBagLayout) まで、幅広いレイアウトマネージャを用意 している。このレッスンでは、レイアウトマネージャを使用するときの一般的なルール、AWT が提供するレイアウトマネージャの概要、および個々の AWT レイアウトマネージャの 使用法について説明する。このレッスンのページでは、アプレットによって配置管理の実例を示す。各アプレットが起動するウィンドウを使って、読者は実際にサイズ変更を行い、サイズ変更が配置にどう影響するかを確認できるようになっている。
レイアウトマネージャを使用するときの一般的なルール
レイアウトマネージャに関して起こりやすい以下のような疑問には、このセクションの内容が回答となる。
- どのようにレイアウトマネージャを選択するのか?
- どのようにレイアウトマネージャを作成し、それをコンテナと結び付け、そして作業の開始を指示するのか?
- レイアウトマネージャは管理するコンポーネントをどのように認識するのか?
BorderLayout の使用方法
BorderLayout は、Frame や Dialog などすべての Window のデフォルトのレイアウ トマネージャである。 コンポーネントを保持する領域は、北領域、南領域、東領域、西領域、中央領域の 5 つに分けられ、新たに増えたスペースはすべて中央領域に配置される。 以下に、各領域ごとに 1 つのボタンを配置したアプレットを示す。使用中のブラウザは 1.0 Java アプレットを実行することができない。したがってここではプログラムが起動するウィンドウの画像を示す。
場合に応じて領域に含まれるコンポーネントが変わる可能性がある場合は、CardLayout クラスを使用する。 CardLayout は Choice によって制御されることがよくある。Choice の状態が CardLayout の表示する Panel (コンポーネントのグループ) を決定するのである。Choice と CardLayout をこの方法で使用しているアプレットを以下に示す。使用中のブラウザは 1.0 Java アプレットを実行することができない。したがってここではプログラムが起動するウィンドウの画像を示す。
FlowLayout はすべての Panel に対するデフォルトのレイアウトマネージャである。FlowLayout は左から右にコンポーネントを配置するだけであり、必要があれば新たな行へ改行する。上記の CardLayout の図の Panel はどちらも FlowLayout を使用している。ここで、FlowLayout を使用する別のアプレット例を示す。使用中のブラウザは 1.0 Java アプレットを実行することができない。したがってここではプログラムが起動するウィンド図の画像を示す。
GridLayout が行うのは、ひとまとまりの Component を等しいサイズにして、要求された数の行と列に表示することである。以下に、GridLayout を使用して 5 つのボタンの表示を制御するアプレットを示す。使用中のブラウザは 1.0 Java アプレットを実行することができない。したがってここではプログラムが起動するウィンドウの画像を示す。
GridBagLayout は、AWT が提供するレイアウトマネージャの中で、最も高度かつ柔軟性に富んだレイアウトマネージャである。セルのグリッド内にコンポーネントを整列させ、必要に応じ、コンポーネントを複数のセルにスパン化させる。グリッドの行は必ずしも同じ高さである必要はなく、グリッドの列も幅が違っていてもかまわない。以下に、GridBagLayout を使用してパネル内の 10 個のボタンを管理するアプレットを示す。使用中のブラウザは 1.0 Java アプレットを実行することができない。したがってここではプログラムが起動するウィンドウの画像を示す。
コンテナ内にコンポーネントを配置する |