无法使Java Layouts正常显示

时间:2013-10-04 07:24:51

标签: layout-manager

我正在尝试制作GUI,但我无法正确设置布局

3 个答案:

答案 0 :(得分:2)

这可以使用复合或嵌套布局来完成,该布局由BorderLayout组成,FlowLayout约束中PAGE_START,两个文本区域GridLayoutCENTER约束中。

这样的事情:

ToolBarAnd2AreasLayout

OTOH,您可以将FlowLayout替换为JToolBar(看起来更好),将GridLayout替换为JSplitPane(更可用,因为窗格可以是设置为当时用户需要的任何大小。)


鉴于问题中现在的示例图片(..paints一千个单词),似乎很清楚包含4行标签,文本字段,按钮,按钮的顶部区域最好在GroupLayout中完成。在另一个GridLayout的{​​{1}},LINE_STARTCENTER中,有3个LINE_END个实例(标签,字段和按钮各一个)。

以下是后者的一个例子:

enter image description here

BorderLayout

答案 1 :(得分:1)

首先,您需要定义主框架的布局。

尝试在Vigenere构造函数的顶部添加此行

    public Vigenere() {
        setLayout(new GridLayout(2, 1));

        JPanel topPanel = new JPanel(new GridLayout(1, 2));
        JPanel p1 = new JPanel(new GridLayout(5, 9));
        p1.add(new JLabel("Source File"));
        p1.add(jtfSourceFile);
        p1.add(new JLabel("Results File"));
        p1.add(jtfResultsFile);
        p1.add(new JLabel("Key Code"));
        p1.add(jtfKeyCode);
        p1.add(new JLabel("Compare"));
        p1.add(jtfCompare);

        JPanel p2 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        p2.add(jbtOpen);
        p2.add(jbtSave);
        p2.add(jbtKey);
        p2.add(jbtCompare);
        p2.add(jbtEncrypt);
        p2.add(jbtDecrypt);
        p2.add(jbtClear);
        p2.add(jbtQuit);

        topPanel.add(p1);
        topPanel.add(p2);


        JPanel p3 = new JPanel(new GridLayout(2, 1));
        jtfSource.setBorder(BorderFactory.createLineBorder(Color.black));
        jtfResults.setBorder(BorderFactory.createLineBorder(Color.black));
        p3.add(jtfSource);
        p3.add(jtfResults);

        add(topPanel);
        //add(p2);
        add(p3);

        pack();

    }

并从那里继续;)

答案 2 :(得分:1)

尝试将GridBagLayout与GridBagConstraints一起使用。当您知道使用它时,您唯一需要的是: http://www-mips.unice.fr/Doc/Java/Tutorial/uiswing/layout/gridbagExample.html