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の解説も合わせてそれを読んでくれ!!と言いたいんですが、それじゃあんまりなので簡単に。

GridBagLayoutHTMLTABLEタグのように縦横の升目を作って、そこにボタンやテキストフィールドなどのコンポーネントをはめ込んでいくものです。どの升目にはり込むか、いくつの升目を潰してはり込むか、升目の中のどの位置にはり込むかなどの細かな指定ができます。

GridBagConstraintsのインスタンス変数に値を設定することによって、その細かな指定を行ないます。ここで設定している変数は四つで

です。このメソッドではこれらのインスタンス変数に値を設定した後

gb.setConstraints(c, gc);

で、コンポーネントをどのようにはり込むかをGridBagLayoutに教えています(と思う)。で最後に

p.add(c)

でコンポーネントをはり込んでいます。

------------------------------------

コンストラクタではり込んでる例を一つだけ見ます。

mb(0, 2, 5, 1, dayPanel,new Label("Calculate Day : "), gb, gc1);

最初の四つの引数から

となり、一番左(gridx = 0)の上から3番め(gridy = 2、一番上は0だから)で横方向に五つ縦方向に一つの升目を使う設定にしています。で、その升目に"Calculate Day : "と書かれたラベルをはってます。

ちょっとオマケを言うと、ここで渡されてくるgc1はコンストラクタの方で

gc1.anchor = GridBagConstraints.WEST;

と指定されているので、左寄せで表示されます。

------------------------------------

前の項目へ次の項目へ

「メイキング・オブ・バイオリズム」のページへ