title: How to get GridBagLayout to respect minimum size of a button or panel?
body: <p>In the following GridBagLayout code, I'm expecting the specified minimum size of JButton btn2 to be respected when the JFrame is resized to be made smaller.  But when I make the JFrame smaller, the btn2 gets smaller than its minimum size and then vanishes.</p>
  
  <p>Can someone point me in the right direction of what I'm doing wrong?  Maybe I have to set the minimum size of the JPanel that contains the buttons?</p>
  
  <p>Any help is appreciated, thanks!</p>
  
  <pre><code>    JFrame frame = new JFrame();
      frame.setSize(400,300);
      frame.setLocationRelativeTo(null);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
      JPanel panel = new JPanel();
      panel.setMinimumSize(new Dimension(400,300));
      panel.setBackground(Color.RED);
  
      panel.setLayout(new GridBagLayout());
      GridBagConstraints gbc = null;
  
      JButton btn1 = new JButton("btn1");
      btn1.setPreferredSize(new Dimension(150,50));
      btn1.setMinimumSize(new Dimension(150,50));
      gbc = new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 
              GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
              new Insets(0,0,0,0), 0, 0);
      panel.add(btn1, gbc);
  
      JButton btn2 = new JButton("btn2");
      btn2.setPreferredSize(new Dimension(150,150));
      btn2.setMinimumSize(new Dimension(150,150));
      gbc = new GridBagConstraints(1, 0, 1, 1, 1.0, 1.0, 
              GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
              new Insets(0,0,100,100), 0, 0);
      panel.add(btn2, gbc);
  
      frame.getContentPane().add(panel);
      frame.setVisible(true);
  </code></pre>