2012-04-21 5 views
2

BorderLayout에 구성 요소를 추가 할 때 컴 파트먼트의 전체 크기를 차지한다는 것을 이해했습니다. 이것은 contentPane의 북쪽에 panel1을 추가 할 때 아래에있는 것처럼 보입니다. 그러나 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

귀하의 패널 3 인 JPanel에는 레이아웃 설정이 없으며, 그래서 인 JPanel의 기본은 BorderLayout를하지 FlowLayout에 사용합니다.

+0

Ooops, BorderLayout을 설정하는 것을 잊었습니다. 고맙습니다. – Tim

관련 문제