Jak sprawić, by GridBagLayout respektował minimalny rozmiar przycisku lub panelu?

W poniższym kodzie GridBagLayout oczekuję, że określony minimalny rozmiar JButton btn2 będzie respektowany, gdy rozmiar JFrame zostanie zmieniony na mniejszy. Ale kiedy zmniejszam JFrame, btn2 staje się mniejszy niż jego minimalny rozmiar, a następnie znika.

Czy ktoś może wskazać mi właściwy kierunek tego, co robię źle? Może muszę ustawić minimalny rozmiar JPanela, który zawiera przyciski?

Każda pomoc jest mile widziana, dzięki!

    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);

questionAnswers(2)

yourAnswerToTheQuestion