/* This is a GridBagLyout Manager It demonstrate the use of GridBagConstraints JRadioButton, JCheckBox and JTextField * */ import javax.swing.*; import java.awt.event.*; import java.awt.*; public class GridBag extends JFrame { JTextField nametxt, phonetxt, emailtxt; JLabel name, phone, email; JButton ok, exit; JRadioButton day, week, month, small, large; JCheckBox slow, fast, nextday; JPanel panel; public GridBag() { // Sets the title of the window setTitle("GridBag Layout Manager"); // Sets the start location of the window setLocationRelativeTo(null); // Sets the action when the window is close setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Create a panel and set the layout to GridBagLayout panel = new JPanel(); panel.setLayout(new GridBagLayout()); // Create the labels name = new JLabel("Name"); phone = new JLabel("Phone"); email = new JLabel("E-Mail"); // Adds the label to GridBagConstraints addItem(panel, name, 0, 0, 1, 1, GridBagConstraints.EAST); addItem(panel, phone, 0, 1, 1, 1, GridBagConstraints.EAST); addItem(panel, email, 0, 2, 1, 1, GridBagConstraints.EAST); // Create the text field nametxt = new JTextField(20); phonetxt = new JTextField(15); emailtxt = new JTextField(25); // Add the text field to the GridBagConstraints addItem(panel, nametxt, 1, 0, 2, 1, GridBagConstraints.WEST); addItem(panel, phonetxt, 1, 1, 1, 1, GridBagConstraints.WEST); addItem(panel, emailtxt, 1, 2, 2, 1, GridBagConstraints.WEST); // Creates a vertical box to organize the buttons Box timebox = Box.createVerticalBox(); // Creates the radio buttons day = new JRadioButton("Day"); week = new JRadioButton("Week"); month = new JRadioButton("Month"); // Group the buttons together ButtonGroup timegroup = new ButtonGroup(); timegroup.add(day); timegroup.add(week); timegroup.add(month); // Add the buttons to the Box timebox.add(day); timebox.add(week); timebox.add(month); // Sets the bevelBroder title timebox.setBorder(BorderFactory.createTitledBorder("Time Frame")); // Adds the box into the GridBagConstraints addItem(panel, timebox, 0, 3, 1, 1, GridBagConstraints.NORTH); // Create a new box to handles the size Box sizebox = Box.createVerticalBox(); // Create the radio buttons small = new JRadioButton("Small"); large = new JRadioButton("Large"); // Group the buttons together ButtonGroup sizegroup = new ButtonGroup(); sizegroup.add(small); sizegroup.add(large); // Add the buttons to the box sizebox.add(small); sizebox.add(large); // Create a bevelBorder title sizebox.setBorder(BorderFactory.createTitledBorder("Size")); // Adds to the GridBagConstraints addItem(panel, sizebox, 1, 3, 1, 1, GridBagConstraints.NORTH); // Creates another box layout Box speed =Box.createVerticalBox(); // Create JCheckBox buttons slow = new JCheckBox("Slow"); fast = new JCheckBox("Fast"); nextday = new JCheckBox("Next Day"); // Group the buttons together ButtonGroup speedgroup = new ButtonGroup(); speedgroup.add(slow); speedgroup.add(fast); speedgroup.add(nextday); // Add the buttons to the box speed.add(slow); speed.add(fast); speed.add(nextday); // Create bevelborder title speed.setBorder(BorderFactory.createTitledBorder("Speed")); // Adds to the GridBagConstraints addItem(panel, speed, 2, 3, 1, 1, GridBagConstraints.NORTH); // Create the buttons ok = new JButton("OK"); exit = new JButton("EXIT"); // Create a horizontal box to hold the buttons Box buttonbox = Box.createHorizontalBox(); // Add the ok button to the box buttonbox.add(ok); // Create a space between ok and exit button buttonbox.add(Box.createHorizontalStrut(50)); // Add the exit button to the box buttonbox.add(exit); // Add the button tp the GridBagConstraints addItem(panel, buttonbox, 2, 4, 1, 1, GridBagConstraints.NORTH); // Add the panel to the content pane add(panel); // Pack everything up pack(); // Sets the window to be visible setVisible(true); } /* Here is the void method of addItem It sets the height, width, location, and align of the components * */ public void addItem(JPanel p, JComponent c, int x, int y, int wid, int hei, int align) { // Creates a GridBagConstraints GridBagConstraints grid = new GridBagConstraints(); // Sets the position of the components grid.gridx = x; grid.gridy = y; // Sets the number of columns & rows span by the components grid.gridwidth = wid; grid.gridheight = hei; // Tells the grid layout how to apportion space grid.weightx = 100.00; grid.weighty = 100.00; // It indicates how much space to use as padding around each component grid.insets = new Insets(5,5,5,5); // Indicates where to place the component if it doesn't fill the space grid.anchor = align; // Indicates whether to stretch the object to fill available space or not grid.fill = GridBagConstraints.NONE; // adds to the panel p.add(c,grid); } public static void main(String[] args) { new GridBag(); } }