GridBagDemo2.java


GridBagDemo2.java

// Fig. 22.23-24: GridBagDemo2.java
// Demonstrating GridBagLayout constants.
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.JList;
import javax.swing.JButton;

class GridBagFrame2 extends JFrame 
{ 
   private final GridBagLayout layout; // layout of this frame
   private final GridBagConstraints constraints; // layout's constraints
    
   // set up GUI
   public GridBagFrame2()
   {
      super("GridBagLayout");
      layout = new GridBagLayout();
      setLayout(layout);
      constraints = new GridBagConstraints(); // instantiate constraints

      // create GUI components
      String[] metals = {"Copper", "Aluminum", "Silver"};
      JComboBox<String> comboBox = new JComboBox<String>(metals);

      JTextField textField = new JTextField("TextField");

      String[] fonts = {"Serif", "Monospaced"};
      JList list = new JList(fonts);

      String[] names = {"zero", "one", "two", "three", "four"};
      JButton[] buttons = new JButton[names.length];

      for (int count = 0; count < buttons.length; count++)
         buttons[count] = new JButton(names[count]);

      // define GUI component constraints for textField
      constraints.weightx = 1;
      constraints.weighty = 1;  
      constraints.fill = GridBagConstraints.BOTH;
      constraints.gridwidth = GridBagConstraints.REMAINDER;
      addComponent(textField);

      // buttons[0] -- weightx and weighty are 1: fill is BOTH
      constraints.gridwidth = 1;
      addComponent(buttons[0]);

      // buttons[1] -- weightx and weighty are 1: fill is BOTH
      constraints.gridwidth = GridBagConstraints.RELATIVE;
      addComponent(buttons[1]);

      // buttons[2] -- weightx and weighty are 1: fill is BOTH
      constraints.gridwidth = GridBagConstraints.REMAINDER;
      addComponent(buttons[2]);

      // comboBox -- weightx is 1: fill is BOTH
      constraints.weighty = 0;
      constraints.gridwidth = GridBagConstraints.REMAINDER;
      addComponent(comboBox);
      
      // buttons[3] -- weightx is 1: fill is BOTH
      constraints.weighty = 1;
      constraints.gridwidth = GridBagConstraints.REMAINDER;
      addComponent(buttons[3]); 

      // buttons[4] -- weightx and weighty are 1: fill is BOTH
      constraints.gridwidth = GridBagConstraints.RELATIVE;
      addComponent(buttons[4]);

      // list -- weightx and weighty are 1: fill is BOTH
      constraints.gridwidth = GridBagConstraints.REMAINDER;
      addComponent(list);
   } // end GridBagFrame2 constructor

   // add a component to the container
   private void addComponent(Component component) 
   {
      layout.setConstraints(component, constraints);
      add(component); // add component
   } 
} // end class GridBagFrame2
public class GridBagDemo2
{ 
   public static void main(String[] args)
   { 
      GridBagFrame2 gridBagFrame = new GridBagFrame2();  
      gridBagFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      gridBagFrame.setSize(300, 200); 
      gridBagFrame.setVisible(true); 
   } 
} // end class GridBagDemo2


Maintained by John Loomis, updated Mon Feb 27 12:16:19 2017