レイアウトマネージャ

GridBagLayoutというレイアウトマネージャを使ってコンポーネントを配置する

 GridBagLayoutが一番楽だと思う

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

import javax.swing.JButton;
import javax.swing.JFrame;

//JFrameを拡張してMainFrmというクラスを作る。
public class MainFrm extends JFrame{
	
	/**
	 * 
	 */
	//eclipseのデフォルトの設定だと警告が出るので、
	//eclipseが指示するとおりにserialVersionUIDを追加
	private static final long serialVersionUID = 1L;
 
	//プログラム起動時に最初に実行される部分
	public static void main(String[] args) {
		//MainFrmというフレームをMyFrmという名前で作る
		MainFrm MyFrm = new MainFrm();
		
		//フレームMyFrmを表示する。
		MyFrm.setVisible(true);
	}
	
	//”new MainFrm()”したときに実行される部分
	public MainFrm() {
		// TODO Auto-generated constructor stub
		
		//フレームクローズでプロセスも閉じる。
		//この一行が無いとフレームを閉じてもプロセスが実行され続けるので書く
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		//フレームのサイズ:setSize(横幅, 縦幅)
		setSize(400, 300);
		
		//フレームのタイトル
		setTitle("メインフレーム");
		
		//フレーム内のコンテナにボタンを追加
		//:addComponent(コンテナ, コンポーネント, 列, 行, 幅, 高さ, 左右上下のスペース)
		addComponent(getContentPane(), new JButton("ボタン1"),
				0, 0, 2, 1, 2);
		addComponent(getContentPane(), new JButton("ボタン2"),
				0, 1, 1, 1, 2);
		addComponent(getContentPane(), new JButton("ボタン3"),
				1, 1, 1, 1, 2);
		addComponent(getContentPane(), new JButton("ボタン4"),
				2, 0, 1, 2, 2);
	}
	
	//コンテナを指定して、コンポーネントを追加する
	//コンテナやコンポーネントは参照渡しされるから、ここでの編集が実際のオブジェクトに反映される
	private void addComponent(Container cont, Component comp,
			int x, int y, int w, int h, int space){
		//コンテナのレイアウトがGridBagLayoutかどうかを判定
		if(!cont.getLayout().getClass().equals(GridBagLayout.class)){
			//GridBagLayoutでなければ、GridBagLayoutに設定する
			cont.setLayout(new GridBagLayout());
		}
		//コンテナのレイアウトを取り出す
		GridBagLayout gbl = (GridBagLayout)cont.getLayout();
		
		//これから追加するコンポーネントの配置方法を指定する
		GridBagConstraints gbc = new GridBagConstraints();
		
		//コンポーネントがグリッドのセルより小さかったら、引き伸ばして表示するように設定
		gbc.fill = GridBagConstraints.BOTH;
		
		//コンポーネントを配置するセル:x列目のy行目に幅wセル、高さhセルで表示
		gbc.gridx = x;
		gbc.gridy = y;
		gbc.gridwidth = w;
		gbc.gridheight = h;
		
		//セルの間にスペース
		gbc.insets.set(space, space, space, space);
		
		//コンポーネントに対する配置方法を登録
		gbl.addLayoutComponent(comp, gbc);
		
		//コンテナにコンポーネントを追加
		cont.add(comp);
	}
}


最終更新:2011年06月14日 00:45
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル