Понимание CardLayout и видимости панели - PullRequest
0 голосов
/ 15 февраля 2019

Примите во внимание следующее:

    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!

Я явно не понимаю, как работает макет карты и размер кадра.Может кто-нибудь прояснить мою путаницу?

1 Ответ

0 голосов
/ 15 февраля 2019

Насколько я понимаю, при использовании макета карты одновременно отображается только одна панель - следовательно, если эта панель имеет размер 100x100, кадр также должен быть 100x100?

Нет,A CardLayout примет предпочтительный размер самых широких и высоких компонентов в нем.

...