2021-10-12 (火) 10:34:36
  • category: swing folder: GridBagLayout title: GridBagLayoutの使用 tags: [GridBagLayout, LayoutManager] author: aterai pubdate: 2003-09-15 description: GridBagLayoutを使用して、左右の部品のサイズを固定、中央だけは水平方向に伸縮可になるよう配置します。 image: https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTNi4XckaI/AAAAAAAAAa8/8VJwvf6EScw/s800/GridBagLayout.png

概要

GridBagLayoutを使用して、左右の部品のサイズを固定、中央だけは水平方向に伸縮可になるよう配置します。
http://terai.xrea.jp/swing/gridbaglayout/screenshot.png

サンプルコード

View in GitHub: Java, Kotlin

解説

上記のサンプルでは、GridBagLayoutBorderLayoutのような配置を行っています。GridBagLayoutの場合、各コンポーネント自身が推奨する高さが生かされるように設定します。
  • BorderLayout
    • それぞれデフォルトの高さ(推奨サイズ)が異なるコンポーネントをBorderLayoutを使用してWESTCENTEREASTに配置すると一番高いコンポーネントまで拡大
    • CENTERJComboBoxEASTJButtonの高さになっている(以下のスクリーンショット参照)
    • MotifLookAndFeelの場合
GridBagLayout1.png
  • GridBagLayout
    • 左右のコンポーネントのサイズはBorderLayoutのように固定して中央のコンポーネントだけを水平方向にのみ伸縮
    • weightxを指定することで余分のスペースを各列のウェイトに比例して分配
    • ウェイトが0の場合余分のスペースはその列に分配されない
    • 左右の列のweightx0.0なので中央の列のweightx0.001でも100.0でも水平方向の余分なスペースすべてが配分されている
    • 垂直方向のスペースは指定していないためデフォルト値のweighty=0.0となり、フレームのサイズを変更しても垂直方向に関しては常にコンポーネントの推奨サイズで固定

参考リンク

コメント