SetDaysFrame.mb()コンストラクタでGridBagLayoutを設定するときに補助メソッドmb()をチョットだけ。
private void mb(int x, int y, int w, int h, Container p, Component c, GridBagLayout gb, GridBagConstraints gc) {
gc.gridx = x;
gc.gridy = y;
gc.gridwidth = w;
gc.gridheight = h;
gb.setConstraints(c, gc);
p.add(c);
}
「Java言語入門」のGridBagLayoutの説明のところにあったのをほぼそのままパクッタので、GridBagLayoutの解説も合わせてそれを読んでくれ!!と言いたいんですが、それじゃあんまりなので簡単に。
GridBagLayoutはHTMLのTABLEタグのように縦横の升目を作って、そこにボタンやテキストフィールドなどのコンポーネントをはめ込んでいくものです。どの升目にはり込むか、いくつの升目を潰してはり込むか、升目の中のどの位置にはり込むかなどの細かな指定ができます。
GridBagConstraintsのインスタンス変数に値を設定することによって、その細かな指定を行ないます。ここで設定している変数は四つで
gridx ---> 左から何番目の升目に配置するか(一番左が0)
gridy ---> 上から何番目の升目に配置するか(一番上が0)
gridwidth ---> 横方向にいくつの升目を占めるか
gridheight ---> 縦方向にいくつの升目を占めるか
です。このメソッドではこれらのインスタンス変数に値を設定した後
gb.setConstraints(c, gc);
で、コンポーネントをどのようにはり込むかをGridBagLayoutに教えています(と思う)。で最後に
p.add(c)
でコンポーネントをはり込んでいます。
コンストラクタではり込んでる例を一つだけ見ます。
mb(0, 2, 5, 1, dayPanel,new Label("Calculate Day : "), gb, gc1);
最初の四つの引数から
gridx = 0
gridy = 2
gridwidth = 5
gridheight = 1
となり、一番左(gridx = 0)の上から3番め(gridy = 2、一番上は0だから)で横方向に五つ縦方向に一つの升目を使う設定にしています。で、その升目に"Calculate Day : "と書かれたラベルをはってます。
ちょっとオマケを言うと、ここで渡されてくるgc1はコンストラクタの方で
gc1.anchor = GridBagConstraints.WEST;
と指定されているので、左寄せで表示されます。