GridBagPanel.java



/** GridBagLayout のテスト */
import java.awt.*;
import javax.swing.*;
public class GridBagPanel extends JPanel {

 /** ボタンの個数 */
    public static final int MAX_NUM = 5;

 /** コンストラクタ */
    public GridBagPanel() {
        GridBagLayout lay = new GridBagLayout(); //レイアウトの生成
        setLayout( lay );                        //レイアウトの設定
        GridBagConstraints gbc
           = new GridBagConstraints();  //レイアウトの細かい情報
        JButton[] buttons = new JButton[MAX_NUM];
        Color bcolor = new Color( 0, 160, 0 );
        Font font = new Font( "TimesRoman", Font.BOLD, 18 );
        for( int i=0; i<MAX_NUM; i++ ) {
            buttons[i] = new JButton( "Button" + i );
            buttons[i].setBackground( bcolor );
            buttons[i].setForeground( Color.white );
            buttons[i].setFont( font );
        }
        gbc.fill = GridBagConstraints.BOTH; //縦横埋める
        gbc.weightx = 3.0;     // 横のサイズの全体を 3 とする。
        gbc.weighty = 1.0;     // 縦のサイズの全体を 1 とする。
        gbc.gridwidth = GridBagConstraints.REMAINDER;  //残り全部
        lay.setConstraints( buttons[0], gbc );
        add( buttons[0] );
 
        gbc.gridheight = 2;
        gbc.gridwidth = 1;
        lay.setConstraints( buttons[1], gbc );
        add( buttons[1] );
 
        gbc.gridheight = 1;
        gbc.gridwidth = GridBagConstraints.REMAINDER;  //残り全部
        lay.setConstraints( buttons[2], gbc );
        add( buttons[2] );
 
        gbc.gridwidth = 1;
        lay.setConstraints( buttons[3], gbc );
        add( buttons[3] );
 
        gbc.gridwidth = GridBagConstraints.REMAINDER;  //残り全部
        lay.setConstraints( buttons[4], gbc );
        add( buttons[4] );
    }

 /** 最初に呼び出されるメソッド */
    public static void main( String argv[] ) {
        JFrame frame = new JFrame( "GridBagLayout Test" );
        GridBagPanel panel = new GridBagPanel();
        frame.getContentPane().add( panel );
        frame.setSize( 400, 200 );
        frame.setVisible( true );
    }
}