Примите во внимание следующее:
JFrame frame = new JFrame();
frame.setLayout(new CardLayout());
JPanel panel1 = new JPanel();
panel1.setPreferredSize(new Dimension(1000, 1000));
panel1.setBackground(Color.RED);
JPanel panel2 = new JPanel();
panel2.setPreferredSize(new Dimension(100, 100));
panel2.setBackground(Color.GREEN);
frame.add(panel1);
frame.add(panel2);
frame.pack();
frame.setVisible(true);
Независимо от того, что кадр заканчивается 1000x1000.Насколько я понимаю, при использовании макета карты одновременно отображается только одна панель - следовательно, если эта панель имеет размер 100x100, кадр также должен иметь размер 100x100?Но это не так.Даже когда рамка зеленого цвета (то есть отображается панель 2), она все равно 1000x1000.
Фактически, даже добавление строки panel1.setVisiblity(false);
ничего не меняет;это все еще влияет на размер кадра, делая его 1000x1000!
Я явно не понимаю, как работает макет карты и размер кадра.Может кто-нибудь прояснить мою путаницу?