2

コンポーネントを 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);
    }

}
4

1 に答える 1

6

panel3 JPanel にはレイアウトが設定されていないため、BorderLayout ではなく JPanel のデフォルトの FlowLayout を使用します。

于 2012-04-21T12:47:04.520 に答える