请帮我用Java中的JFrame和BorderLayout

时间:2013-04-03 02:20:59

标签: java swing jframe layout-manager jlist

有人能告诉我为什么我的JList和JLabel没有自动调整大小来填满整个屏幕吗?另外为什么不通过JButton自动调整大小?万分感谢

public class testing extends JFrame {

    private String[] testArray = {"apple", "banana", "cat"};
    private JPanel firstLayer = new JPanel();
    private JPanel secondLayerLeft = new JPanel();
    private JPanel secondLayerRight = new JPanel();
    private JList<String> leftText = new JList<String>();
    private JLabel rightOutput = new JLabel();
    private JButton button = new JButton("test button");

    public testing(){
        firstLayer.setLayout(new BorderLayout());
        firstLayer.add(secondLayerLeft, BorderLayout.WEST);
        firstLayer.add(secondLayerRight, BorderLayout.EAST);
        firstLayer.add(button, BorderLayout.SOUTH);

        secondLayerLeft.add(leftText);
        leftText.setListData(testArray);
        secondLayerRight.add(rightOutput);
        rightOutput.setText("testing 12345");


        secondLayerLeft.setBorder(new EtchedBorder());
        secondLayerRight.setBorder(new EtchedBorder());

        this.add(firstLayer);
    }


    public static void main(String[] args) {
        testing gui = new testing();
        gui.setSize(700, 800);
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.setVisible(true);
    }

}

2 个答案:

答案 0 :(得分:2)

这是BorderLayout的基本功能。仅自动调整CENTER位置的大小。任何边框组件可以改变大小的唯一方法是,实际上它们是否会改变大小(getPreferredSize更改,然后再执行下一个布局)

答案 1 :(得分:1)

您的左右面板尺寸正确,可以容纳其中包含的JPanel的首选尺寸。您的按钮占据了边框布局的整个南部,就像它应该的那样,并且精美地调整大小。如果你想要将某些东西拉伸到整个窗口,请将它放在中心。