From window, to wind

趣味のゲームとJavaプログラムなどについて 適当に書き綴るブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

GridBagLayoutで配置するメソッド

GridBagLayoutでコンポーネントを配置するためのメソッドを用意したクラスです。普通に使うといろいろ書かないといけないので不便であるので、今後はこのクラスを用いてコンポーネントを配置していきます。
ソースコード

package program;

import java.awt.Component;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

public class GBLayout extends GridBagLayout{

    static GridBagConstraints constraints = new GridBagConstraints();
   
    static void addGB(Component component, Container container, int x, int y,
            int h, int w){
        if ((container.getLayout() instanceof GridBagLayout) == false) {
            container.setLayout(new GridBagLayout());
        }
        constraints.gridx = x;
        constraints.gridy = y;
        constraints.gridheight = h;
        constraints.gridwidth = w;
        container.add(component, constraints);
    }
   
    static void addGB(Component component, Container container, int x, int y,
            int h, int w, double wx, double wy){
        if ((container.getLayout() instanceof GridBagLayout) == false) {
            container.setLayout(new GridBagLayout());
        }
        constraints.weightx = wx;
        constraints.weighty = wy;
        addGB(component, container, x, y, h, w);
       
        constraints.weightx = 0;
        constraints.weighty = 0;
    }
   
    static void addGB(Component component, Container container, int x, int y,
            int h, int w, double wx, double wy, int anchor){
        if ((container.getLayout() instanceof GridBagLayout) == false) {
            container.setLayout(new GridBagLayout());
        }
        constraints.anchor = anchor;
        addGB(component, container, x, y, h, w, wx, wy);
       
        constraints.anchor = GridBagConstraints.CENTER;
    }
   
    static void addGB(Component component, Container container, int x, int y,
            int h, int w, double wx, double wy, int anchor, int fill){
        if ((container.getLayout() instanceof GridBagLayout) == false) {
            container.setLayout(new GridBagLayout());
        }
        constraints.fill = fill;
        addGB(component, container, x, y, h, w, wx, wy, anchor);
       
        constraints.fill = GridBagConstraints.NONE;
    }
   
    static void addGB(Component component, Container container, int x, int y,
            int h, int w, double wx, double wy, int anchor, int fill, Insets insets){
        if ((container.getLayout() instanceof GridBagLayout) == false) {
            container.setLayout(new GridBagLayout());
        }
        constraints.insets = insets;
        addGB(component, container, x, y, h, w, wx, wy, anchor, fill);
       
        constraints.insets = new Insets(0,0,0,0);
    }
   
    static void addGB(Component component, Container container, int x, int y,
            int h, int w, double wx, double wy, int anchor, int fill,
            Insets insets, int ipx, int ipy){
        if ((container.getLayout() instanceof GridBagLayout) == false) {
            container.setLayout(new GridBagLayout());
        }
        constraints.ipadx = ipx;
        constraints.ipady = ipy;
        addGB(component, container, x, y, h, w, wx, wy, anchor, fill, insets);
       
        constraints.ipadx = 0;
        constraints.ipady = 0;
    }
   
}



解説
複数のaddGBメソッドを用意して使い分けるようにした。
ContainerにGridBagLayoutをセットするのをif文で制御している。
Componentを配置してからレイアウトをセットしなおすと処理がおかしくなるので。

使用方法は
GBLayout.addGB(…)
とすればよい。
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://kagenyan.blog69.fc2.com/tb.php/19-90f8ee56
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。