GridBagLayoutのweightx, weightyフィールドの仕様

仕様:GridBagLayoutのweightx, weightyは、各コンポーネントの配置後、グリッド全体とコンテナ(フレームやパネルなど)との間の余った領域をどのコンポーネント(の配置されたグリッド)に割り当てるかを決定する数値

これはもう、単にJavadoc(GridBagConstraints)に記載されている仕様に過ぎないが、GridBagLayout自体が複雑で、かつ設定するフィールドが多い(しかも似たような名前のフィールドがある)ために、思う通りのレイアウトにならず、いらいらすることが多いので、たまたま上手く理解の枠に嵌って意図した通りのレイアウトが出来たこのタイミングでメモしておく。

尚、この仕様に関しては、以下のサイトで詳しく説明されているので、敢えてこのメモを理解する必要は無い。

javaDrive(余分な領域の配分方法を設定する)

今回やりたかったことは、縦に3分割されたグリッドのうち、上2つのグリッドのサイズを固定値(コンポーネントのサイズと同等)にした状態で上詰めにする(3つめのグリッドはレイアウトのための空パネル)、というレイアウト。

一番下のコンポーネントのgridheightをいくつに設定しても、3つのグリッドで綺麗に3分割してくれていたが(wightyの設定が間違っていたので、余分な領域を綺麗に3等分していたということ)、一番下にweighty=100.0を指定すると、一番下のグリッドが、上2つのコンポーネン配置後の余分な領域を全て持っていってくれたのでこれで解決。

いやぁ、UIってさぁ。