// This code example is from the following source:
//
// Book Title:  Programming with Objects, A Comparative Presentation
//              of Object-Oriented Programming with C++ and Java
//
// Chapter:     Chapter 17  OO For Graphical User INterfaces, A Tour Of Three Toolkits
//
// Section:     Section 17.9.6  Grid-Bag Layout
//
// The links to the rest of the code in this book are at
//     
//      http://programming-with-objects.com/pwocode.html
//
// For further information regarding the book, please visit
//
//      http://programming-with-objects.com
//



//GridBagLayoutTest.java

import java.awt.*;            // for Container, BorderLayout
import java.awt.event.*;      // for WindowAdapter
import javax.swing.*;

public class GridBagLayoutTest {
    public static void main( String[] args ) {

        JButton button;

        JFrame f = new JFrame( "GridBagLayoutTest" );
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        Container contentPane = f.getContentPane();
        GridBagLayout gridbag = new GridBagLayout();
        contentPane.setLayout( gridbag );
        GridBagConstraints cons = new GridBagConstraints();
        cons.fill = GridBagConstraints.BOTH;
        cons.weightx = 1.0;
        cons.weighty = 1.0;

        // ROW 1:
        button = new JButton( "Button 1" );
        cons.gridx = 0;
        cons.gridy = 0;
        cons.ipadx = 100;
        gridbag.setConstraints( button, cons );
        contentPane.add( button );

        button = new JButton( "Button 2" );
        cons.gridx = 1;
        cons.gridy = 0;
        cons.ipadx = 0;
        gridbag.setConstraints( button, cons );
        contentPane.add( button );

        button = new JButton( "Button 3" );
        cons.gridx = 2;
        cons.gridy = 0;
        gridbag.setConstraints( button, cons );
        contentPane.add( button );

        // ROW 2:       
        button = new JButton( "Button 4" );
        cons.gridwidth = 2;
        cons.gridx = 0;
        cons.gridy = 1;
        cons.ipady = 50;
        gridbag.setConstraints( button, cons );
        contentPane.add( button );

        button = new JButton( "Button 5" );
        cons.gridwidth = 1;
        cons.gridx = 2;
        cons.gridy = 1;
        gridbag.setConstraints( button, cons );
        contentPane.add( button );

        // ROW 3:
        button = new JButton( "Button 6" );
        cons.gridwidth = 3;
        cons.gridx = 0;
        cons.gridy = 2;
        cons.ipady = 0;
        gridbag.setConstraints( button, cons );
        contentPane.add( button );

        f.pack();
        f.setLocation( 200, 300 );
        f.setVisible( true );
    }
}