title: Is it possible to change the height of each grid in a GridLayout?
body: <p>I am trying to create a simple menu interface with 4 rows of various buttons and labels using <code>GridLayout</code> with <code>FlowLayout</code> inside each grid for organising the elements. However the space for the buttons and labels which should only take 1 line takes up a huge amount of space. </p>
  
  <p>This is what my interface looks like minimized: </p>
  
  <p><img src="https://i.imgur.com/pt0jvIp.png"></p>
  
  <p>This is what it looks like maximized: </p>
  
  <p><img src="https://i.imgur.com/afHaOcu.png"></p>
  
  <p>I am looking to set the maximum size of the labels panels/grid so that it only takes a small amount of space. </p>
  
  <p>I am trying to make all the elements visible without anything being hidden with as small a window size as possible like this:</p>
  
  <p><img src="https://i.imgur.com/4zBhQaf.png"></p>
  
  <p>This is my code: </p>
  
  <pre><code>public class Window extends JFrame{
  public Window() {
      super("TastyThai Menu Ordering");
  }
  
  public static void main(String[] args) {
      Window w = new Window();
       w.setSize(500, 500);
       w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
       JLabel title = new JLabel("TastyThai Menu Order", SwingConstants.CENTER);
       title.setFont(title.getFont().deriveFont(32f));
  
       //generate page title
       Container titlePanel = new JPanel(); // used as a container
       titlePanel.setBackground(Color.WHITE);
       FlowLayout flow = new FlowLayout(); // Create a layout manager
       titlePanel.setLayout(flow);// assign flow layout to panel
       titlePanel.add(title); // add label to panel
       w.getContentPane().add(BorderLayout.NORTH,titlePanel);
  
       //generate row containers
       Container r1 = new JPanel(new FlowLayout());
       Container r2 = new JPanel(new FlowLayout());
       Container r3 = new JPanel(new FlowLayout());
       Container r4 = new JPanel(new FlowLayout());
  
       //generate mains radio buttons
       Container mains = new JPanel(new GridLayout(7, 0));
       mains.setBackground(Color.RED);
       JLabel mainsHeader = new JLabel("Mains");
       mains.add(mainsHeader);
       String[] mainsChoices = {"Vegetarian", "Chicken", "Beef", "Pork", "Duck", "Seafood Mix"};
       JRadioButton[] mainsRadioButton = new JRadioButton[6];
       ButtonGroup mainsButtons = new ButtonGroup();
       for(int i = 0; i &lt; mainsChoices.length; i++) {
          mainsRadioButton[i] = new JRadioButton(mainsChoices[i]);
          mains.add(mainsRadioButton[i]);
          mainsButtons.add(mainsRadioButton[i]); 
       }
  
       //generate noodles radio buttons
       Container noodles = new JPanel(new GridLayout(7, 0));
       noodles.setBackground(Color.GREEN);
       JLabel noodlesHeader = new JLabel("Noodles");
       noodlesHeader.setFont(noodlesHeader.getFont().deriveFont(24f));
       noodles.add(noodlesHeader);
       String[] noodlesChoices = {"Pad Thai", "Pad Siew", "Ba Mee"};
       JRadioButton[] noodlesRadioButton = new JRadioButton[3];
       ButtonGroup noodlesButtons = new ButtonGroup();
       for(int i = 0; i &lt; noodlesChoices.length; i++) {
           noodlesRadioButton[i] = new JRadioButton(noodlesChoices[i]);
           noodles.add(noodlesRadioButton[i]);
           noodlesButtons.add(noodlesRadioButton[i]); 
       }
  
       //generate sauces radio buttons
       Container sauces = new JPanel(new GridLayout(7, 0));
       sauces.setBackground(Color.BLUE);
       JLabel saucesHeader = new JLabel("Sauce");
       saucesHeader.setFont(saucesHeader.getFont().deriveFont(24f));
       sauces.add(saucesHeader);
       String[] saucesChoices = {"Soy Sauce", "Tamarind Sauce"};
       JRadioButton[] saucesRadioButton = new JRadioButton[2];
       ButtonGroup saucesButtons = new ButtonGroup();
       for(int i = 0; i &lt; saucesChoices.length; i++) {
           saucesRadioButton[i] = new JRadioButton(saucesChoices[i]);
           sauces.add(saucesRadioButton[i]);
           saucesButtons.add(saucesRadioButton[i]); 
       }
  
       //generate extras check boxes
       Container extras = new JPanel(new GridLayout(7, 0));
       extras.setBackground(Color.YELLOW);
       JLabel extrasHeader = new JLabel("Extra");
       extrasHeader.setFont(extrasHeader.getFont().deriveFont(24f));
       extras.add(extrasHeader);
       String[] extrasChoices = {"Mushroom", "Egg", "Broccoli", "Beansrpout", "Tofu"};
       JCheckBox[] extrasBoxes = new JCheckBox[5];
       for(int i = 0; i &lt; extrasChoices.length; i++) {
           extrasBoxes[i] = new JCheckBox(extrasChoices[i]);
           extras.add(extrasBoxes[i]);
       } 
  
       JLabel selectionPrice = new JLabel("Selection Price: $ ");
       JLabel selectionPriceVal = new JLabel("_______________");
       JButton addToOrder = new JButton("Add to Order");
  
       JLabel totalPrice = new JLabel("Total Price: $ ");
       JLabel totalPriceVal = new JLabel("_______________");
       JButton clearOrder = new JButton("Clear Order");
  
       JRadioButton pickUp = new JRadioButton("Pick Up");
       JRadioButton delivery = new JRadioButton("Delivery");
       ButtonGroup pickupDelivery = new ButtonGroup();
       pickupDelivery.add(pickUp);
       pickupDelivery.add(delivery);
       JButton completeOrder = new JButton("Complete Order");
  
       Container menuSelection = new JPanel(new GridLayout(4,0));
       menuSelection.add(r1);
       r1.add(mains);
       r1.add(noodles);
       r1.add(sauces);
       r1.add(extras);
       menuSelection.add(r2);
       r2.add(selectionPrice);
       r2.add(selectionPriceVal);
       r2.add(addToOrder);
       menuSelection.add(r3);
       r3.add(totalPrice);
       r3.add(totalPriceVal);
       r3.add(clearOrder);
       menuSelection.add(r4);
       r4.add(pickUp);
       r4.add(delivery);
       r4.add(completeOrder);
  
       w.getContentPane().add(BorderLayout.CENTER, menuSelection);
  
       w.setVisible(true);
  }   
  }
  </code></pre>