GridBagLayout と GridBagConstraints

import java.awt.*;
import java.awt.event.*;

public class Test {
	public static void main (String[] args)
	{
		Win win = new Win("Test Window");
	}
}

class Win extends Frame {
	Win (String name)
	{
					// Frameクラスのコンストラクタ(Windowのタイトルを引き渡す)
		super(name);
					// Windowの大きさ
		setSize(200, 300);
					// レイアウトの変更(水平,垂直ギャップ)
		GridBagLayout gbl = new GridBagLayout();
		setLayout(gbl);
		GridBagConstraints cs = new GridBagConstraints();
					// パネルの定義
		Panel pn1 = new Panel();
		pn1.setBackground(Color.cyan);
		Panel pn2 = new Panel();
		pn2.setBackground(Color.green);
		Panel pn3 = new Panel();
		pn3.setBackground(Color.pink);
					// レイアウト
						// 1行目
		cs.fill    = GridBagConstraints.BOTH;   // ギャップを詰める

		cs.weightx    = 4.0;   // 幅の調整
		cs.weighty    = 10;   // 高さの調整
		gbl.setConstraints(pn1, cs);
		add(pn1);

		cs.weightx    = 1.0;   // 幅の調整
		cs.gridwidth  = GridBagConstraints.REMAINDER;   // この行の最後
		gbl.setConstraints(pn2, cs);
		add(pn2);
						// 2行目
		cs.weighty    = 2;   // 高さの調整
		cs.gridwidth  = GridBagConstraints.REMAINDER;   // この行の最後
		gbl.setConstraints(pn3, cs);
		add(pn3);
					// ウィンドウを表示
		setVisible(true);
					// イベントアダプタ
		addWindowListener(new WinEnd());
	}

	/******************************/
	/* 上,左,下,右の余白の設定 */
	/******************************/
	public Insets getInsets()
	{
		return new Insets(35, 10, 10, 10);
	}

	/************/
	/* 終了処理 */
	/************/
	class WinEnd extends WindowAdapter
	{
		public void windowClosing(WindowEvent e) {
			System.exit(0);
		}
	}
}