繁体   English   中英

了解CardLayout和面板可见性

[英]Understanding CardLayout and panel visibility

考虑以下:

    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!

我显然误会了卡布局和框架大小的工作原理。 有人可以消除我的困惑吗?

我的理解是,使用卡片布局时,一次只会显示一个面板-因此,如果该面板是100x100,则框架也应该是100x100吗?

不会CardLayout将采用其中最大和最高组件的首选大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM