我正在尝试制作GUI,但我无法正确设置布局
答案 0 :(得分:2)
这可以使用复合或嵌套布局来完成,该布局由BorderLayout
组成,FlowLayout
约束中PAGE_START
,两个文本区域GridLayout
在CENTER
约束中。
这样的事情:
OTOH,您可以将FlowLayout
替换为JToolBar
(看起来更好),将GridLayout
替换为JSplitPane
(更可用,因为窗格可以是设置为当时用户需要的任何大小。)
鉴于问题中现在的示例图片(..paints一千个单词),似乎很清楚包含4行标签,文本字段,按钮,按钮的顶部区域最好在GroupLayout
中完成。在另一个GridLayout
的{{1}},LINE_START
和CENTER
中,有3个LINE_END
个实例(标签,字段和按钮各一个)。
以下是后者的一个例子:
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