レイアウトマネージャーを使用すると、コンテナ内のコンポーネントのサイズと位置を決定することにより、ビジュアルコンポーネントを GUI フォーム内に配置する方法を制御できます。これは、LayoutManager インタフェースを実装することによって実現されます。
デフォルトでは、GUI ビルダーで作成された新規フォームはフリーデザインパラダイムを使用します。このパラダイムを使用すると、フォームをレイアウトするときに、コンポーネントの最適な位置揃えと間隔について自動的にヒントを示す視覚的なガイドラインを使用できます。ユーザーが作業を行うと、GUI ビルダーはユーザーによるデザインの決定を機能 UI に変換し、ユーザーはレイアウトマネージャーを指定する必要がありません。フリーデザインは、動的レイアウトモデルを採用しているので、ユーザーがフォームのサイズを変更したりロケールを切り替えたりすると、それらの変更に応じて、コンポーネント間の関係を変更することなく、GUI が調整されます。
旧バージョンの IDE で作成したフォームを処理する場合、または、フォームに標準 Java クラスとの互換性を持たせる場合などには、フォームのレイアウトマネージャーを指定できます。
IDE では、次のレイアウトマネージャーを選択できます。
FlowLayout () は、コンテナ内のコンポーネントをページ中の単語のように配置します。まず、最上行が一杯になるまで左から右に埋め、次々と下の行を埋めていきます。
BorderLayout () は、コンテナの縁に沿って、またはコンテナの中央にコンポーネントを配置します。BorderLayout を使用すると、コンポーネントを次の 5 つの位置に配置できます。「North」、「South」、「East」、「West」、および「Center」。これらはそれぞれ、コンテナの上端、下端、右端、左端、および内部領域に対応します。
GridLayout () は、等しいサイズのセルで構成されたグリッドにコンポーネントを配置します。コンポーネントは、左から右、上から下の方向にグリッドに沿って追加されます。
GridBagLayout () は、「制約」という複雑な一連のコンポーネントプロパティーを使用して、コンテナをサイズ変更したときでも、あらゆる側面からレイアウトを正確に制御することを可能にする強力なレイアウトマネージャーです。このレイアウトマネージャーは、プラットフォームを問わず一貫した外観を維持する自由形式のレイアウトを作成できるため、マルチプラットフォーム対応の Java アプリケーションに対して特に有効です。
GridBagLayout は、行および列からなるグリッドにコンポーネントを配置します。グリッドのセルが同じサイズである必要はありません。コンポーネントは、複数の行または列、あるいはその両方にまたがることができます。GridBagLayout の使用方法の詳細は、GridBag カスタマイザの使用方法を参照してください。
CardLayout () は、同じ表示領域を占有する複数のコンポーネントを管理できます。CardLayout を使用した場合、各コンポーネントは一束のトランプの 1 枚のようなものであり、カードのサイズはすべて同じで、見えるのはいつでも一番上のカードだけです。すべてのコンポーネントが同じ表示空間を共有しているため、デザイン時、特定のコンポーネントを選択するには、「インスペクタ」ウィンドウを使用する必要があります。
BoxLayout () では、垂直方向と水平方向のどちらか一方の方向に複数のコンポーネントを配置できます (垂直、水平の両方向には配置できない)。BoxLayout で管理するコンポーネントは、コンテナに追加された順序で、左から右、または上から下に配置されます。BoxLayout では、コンポーネントは、複数のコンポーネントが追加されたとき、あるいはコンテナのサイズが変更されたときでも、次の行または列に折り返されません。
AbsoluteLayout () は、フォーム内の正確な位置にコンポーネントを配置したり、IDE 内で自由にコンポーネントを移動したり、選択ボーダーを使用してコンポーネントのサイズを変更したりすることができる特殊なレイアウトマネージャーです。このレイアウトマネージャーは、特別な制限もなく、プロパティーを設定する必要もないため、プロトタイプを作成するときに特に便利です。ただし、コンポーネントの位置やサイズが固定されていて、環境に合わせて変わることがないため、本稼動のアプリケーションには推奨されません。
NullLayout () は、まったくレイアウトマネージャーなしでフォームをデザインするときに使用します。AbsoluteLayout 同様、プロトタイプをすばやく作成する際には便利ですが、コンポーネントの位置やサイズが固定されいて、環境に合わせて変わることがないため、本稼働のアプリケーションには推奨されません。