请考虑以下内容:
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);
也不会改变任何内容。 still 会影响帧大小,使其变为1000x1000!
我显然误会了卡的布局和框架大小。有人可以消除我的困惑吗?
答案 0 :(得分:1)
据我了解,使用卡片布局时,一次只会显示一个面板-因此,如果该面板是100x100,则框架也应该是100x100?
不。 CardLayout
将采用其中最宽和最高组件的首选大小。