配置されるコンポーネントのサイズ調整について
レイアウトマネージャーにBorderLayoutを使用している場合、配置される位置によってコンポーネントのサイズが自動的に変更されます。その為、コンポーネントにサイズを指定していたとしても変更されてしまう場合があります。ここでは配置位置毎にどのようにサイズが変更されるのかを確認していきます。
サイズの調整は次のように行われます。
1. PAGE_START(NORTH), PAGE_END(SOUTH)に配置されたコンポーネント 追加するコンポーネントの高さは変更せず、幅は最大に広がる。 2. LINE_START(WEST), LINE_END(EAST)に配置されたコンポーネント 追加するコンポーネントの幅は変更しない。 高さはPAGE_START及びPAGE_ENDの位置にコンポーネントがなければ最大まで 広がる。もしPAGE_START及びPAGE_ENDの位置にコンポーネントがあれば PAGE_STARTとPAGE_ENDのコンポーネントを置いた後の残りの領域いっぱいま で高さ拡大する。 3. CENTERに配置されたコンポーネント PAGE_START, PAGE_END, LINE_START, LINE_ENDに配置されたコンポーネント の残りの部分に部分に高さ及び幅を広げる。
具体的なイメージを持つ為に1つ1つ確認していきます。
PAGE_STARTにコンポーネントを配置した場合
PAGE_STARTに配置したコンポーネントは高さは変更されずに幅は最大まで広がります。
JButton button = new JButton("PAGE_START"); getContentPane().add(button, BorderLayout.PAGE_START);
PAGE_ENDにコンポーネントを配置した場合
PAGE_ENDに配置したコンポーネントは高さは変更されずに幅は最大まで広がります。
JButton button = new JButton("PAGE_END"); getContentPane().add(button, BorderLayout.PAGE_END);
LINE_STARTにコンポーネントを配置した場合
LINE_STARTに配置したコンポーネントは幅は変更されずに高さは最大まで広がります。
JButton button = new JButton("LINE_START"); getContentPane().add(button, BorderLayout.LINE_START);
もしPAGE_STARTやPAGE_ENDにコンポーネントが配置されていた場合はPAGE_STARTやPAGE_ENDの方が優先され、LINE_STARTに配置したコンポーネントは残った高さいっぱいまで広がります。
JButton button1 = new JButton("LINE_START"); JButton button2 = new JButton("PAGE_START"); getContentPane().add(button1, BorderLayout.LINE_START); getContentPane().add(button2, BorderLayout.PAGE_START);
LINE_ENDにコンポーネントを配置した場合
LINE_ENDに配置したコンポーネントは幅は変更されずに高さは最大まで広がります。
JButton button = new JButton("LINE_END"); getContentPane().add(button, BorderLayout.LINE_END);
もしPAGE_STARTやPAGE_ENDにコンポーネントが配置されていた場合はPAGE_STARTやPAGE_ENDの方が優先され、LINE_ENDに配置したコンポーネントは残った高さいっぱいまで広がります。
JButton button1 = new JButton("LINE_END"); JButton button2 = new JButton("PAGE_END"); getContentPane().add(button1, BorderLayout.LINE_END); getContentPane().add(button2, BorderLayout.PAGE_END);
CENTERにコンポーネントを配置した場合
CENTERに配置したコンポーネントは残っている領域いっぱいまで幅及び高さが広がります。
JButton button = new JButton("CENTER"); getContentPane().add(button, BorderLayout.CENTER);
CENTERに配置されたコンポーネントは一番優先度が低いため、他の領域に配置されて余った領域いっぱいに表示されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。