繁体   English   中英

Java-BorderLayout-组件应该占用全宽吗?

[英]Java - BorderLayout - Should components take up full width?

据我了解,当将组件添加到BorderLayout时,它们将占用整个隔离专区的大小。 当在contentPane的北部添加panel1时,似乎是这种情况。 但是,当我然后将panel2放在panel3的北部,并将panel3添加到contentPane的中心时,panel2似乎占用了尽可能最小的空间。

是什么造成这些尺寸的差异?

public class BorderLayoutTesting {

    public static void main (String[] args) {
        JFrame frame = new JFrame();

        JPanel panel1 = new JPanel();
        panel1.setLayout(new BorderLayout());
        panel1.add(new JLabel("name:"), BorderLayout.WEST);
        panel1.add(new JTextField(), BorderLayout.CENTER);

        JPanel panel2 = new JPanel();
        panel2.setBorder(BorderFactory.createLineBorder(Color.black));
        panel2.setLayout(new BorderLayout());
        panel2.add(new JLabel("your full address with postcode:"), BorderLayout.WEST);
        panel2.add(new JTextField(), BorderLayout.CENTER);

        Container container = frame.getContentPane();
        container.setLayout(new BorderLayout());
        container.add(panel1, BorderLayout.NORTH);
        JPanel panel3 = new JPanel();
        panel3.add(panel2, BorderLayout.NORTH);
        container.add(panel3, BorderLayout.CENTER);
        panel3.setBorder(BorderFactory.createLineBorder(Color.black));

        frame.setSize(500,500);
        frame.setVisible(true);
    }

}

panel3 JPanel没有设置布局,因此它使用JPanel的默认FlowLayout而不是BorderLayout。

暂无
暂无

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

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