title: Gui - JPanel adding JComponent into GridLayout cell
body: <p>I'm trying to display a frame using GridLayout, but one of my panels isn't displaying.</p>
  
  <p>The JPanel that I'm having trouble with (gridPanel) is supposed to have a 50 by 50 GridLayout and each cell in that grid is supposed to have a Square object added to it.  Then that panel is  supposed to be added to the frame, but it doesn't display.</p>
  
  <pre><code>import java.awt.*;
  import javax.swing.*;
  
  public class Gui extends JFrame{
  
      JPanel buttonPanel, populationPanel, velocityPanel, gridPanel;
      JButton setupButton, stepButton, goButton;
      JLabel populationLabel, velocityLabel;
      JSlider populationSlider, velocitySlider;
      Square [] [] square;
  
      public Gui() {
  
          setLayout(new GridBagLayout());
          GridBagConstraints c = new GridBagConstraints();
  
          //Set up JButtons
          buttonPanel = new JPanel();
          setupButton = new JButton("Setup");
          stepButton = new JButton("Step");
          goButton = new JButton("Go");
  
          buttonPanel.add(setupButton);
          buttonPanel.add(stepButton);
          buttonPanel.add(goButton);
  
          c.fill = GridBagConstraints.HORIZONTAL;
          c.gridx = 0;
          c.gridy = 1;
          c.gridwidth = 2;   //2 columns wide
          add(buttonPanel, c);
  
  
          //Set up populationPanel    
          populationPanel = new JPanel();
          populationLabel = new JLabel("Population");
          populationSlider = new JSlider(JSlider.HORIZONTAL,0, 200, 1);
  
          populationPanel.add(populationLabel);
          populationPanel.add(populationSlider);
  
          c.fill = GridBagConstraints.LAST_LINE_END;
          c.gridx = 0;
          c.gridy = 2;
          c.gridwidth = 2;   //2 columns wide
          add(populationPanel, c);        
  
  
          //Set up velocityPanel
          velocityPanel = new JPanel();
          velocityLabel = new JLabel("    Velocity");
          velocitySlider = new JSlider(JSlider.HORIZONTAL,0, 200, 1);
  
          velocityPanel.add(velocityLabel);
          velocityPanel.add(velocitySlider);
  
          c.fill = GridBagConstraints.LAST_LINE_END;
          c.gridx = 0;
          c.gridy = 3;
          c.gridwidth = 2;   //2 columns wide
          add(velocityPanel, c);  
  
  
          //Set up gridPanel
          JPanel gridPanel = new JPanel(new GridLayout(50, 50));
          square = new Square[50][50];
  
          for(int i = 0; i &lt; 50; i++){
              for(int j = 0; j &lt; 50; j++){
                      square[i][j] = new Square();
                      gridPanel.add(square[i][j]);
              }
          }
  
          c.fill = GridBagConstraints.HORIZONTAL;
          c.gridx = 0;
          c.gridy = 0;
          c.gridwidth = 2;   //2 columns wide
          add(gridPanel, c);  
      }
  
      /**
       * Create the GUI and show it.  For thread safety,
       * this method should be invoked from the
       * event-dispatching thread.
       */
      private static void createAndShowGUI() {
          //Create and set up the window.
          Gui frame = new Gui();
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
          //Display the window.
          frame.pack();
          frame.setVisible(true);
      }
  
      public static void main(String[] args) {
          //Schedule a job for the event-dispatching thread:
          //creating and showing this application's GUI.
          javax.swing.SwingUtilities.invokeLater(new Runnable() {
              public void run() {
                  createAndShowGUI();
              }
          });
      }
  }
  </code></pre>
  
  <p>Square class</p>
  
  <pre><code>import java.awt.*;
  import javax.swing.*;
  
  public class Square extends JComponent{
  
      public void paintComponent(Graphics g) {
          super.paintComponent(g);
          g.setColor(Color.BLACK);
          g.fillRect(10, 10, 10, 10);
      }
  
  }
  </code></pre>