2012-04-21 59 views
2

我的理解是,在向BorderLayout添加组件时,它们会占用整个大小的隔间。将panel1添加到contentPane的北部时,似乎就是这种情况。但是,当我将panel2放在panel3的北部,并将panel3添加到contentPane的中心时,panel2似乎占用了最小的空间量。Java - BorderLayout - 组件应占用全宽吗?

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

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); 
    } 

} 

回答

6

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

+0

哎呀,忘了设置BorderLayout。谢谢。 – Tim 2012-04-21 12:57:05