2012-04-21 10 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にはレイアウトが設定されていないため、BorderLayoutではなくJPanelのデフォルトのFlowLayoutが使用されます。

+0

Ooops、BorderLayoutを設定するのを忘れました。ありがとうございました。 – Tim

関連する問題