谁能告诉我我需要使用哪种java布局来实现下面的布局:

我目前正在使用FlowLayout,但是我无法让输入字段在输出窗口旁边对齐:

抱歉,如果这是一个简单的问题,这是我第一次使用java。下面是我的框架代码:
private void makeFrame()
{
setLayout(new FlowLayout(0));
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
JPanel panel6 = new JPanel();
JPanel panel7 = new JPanel();
panel1.setLayout(new FlowLayout(0));
panel2.setLayout(new FlowLayout(0));
panel3.setLayout(new FlowLayout(0));
panel4.setLayout(new FlowLayout(0));
panel5.setLayout(new FlowLayout(0));
panel6.setLayout(new FlowLayout(0));
panel7.setLayout(new FlowLayout(0));
JLabel firstnameJLabel = new JLabel("First Name");
JLabel lastnameJLabel = new JLabel("Last Name");
JLabel streetJLabel = new JLabel("Street");
JLabel townJLabel = new JLabel("Town");
JLabel postcodeJLabel = new JLabel("Post Code");
panel1.add(listAllBtn);
panel1.add(listPersonalBtn);
panel1.add(listBusinessBtn);
panel1.add(addPersonalBtn);
panel1.add(addBusinessBtn);
panel1.add(deleteBtn);
panel1.add(findBtn);
panel1.add(quitBtn);
panel2.add(firstnameJLabel);
panel2.add(this.firstNameField);
panel2.add(this.bookScrollPane);
this.outputArea.setEditable(false);
panel3.add(lastnameJLabel);
panel3.add(this.lastNameField);
panel4.add(streetJLabel);
panel4.add(this.streetField);
panel5.add(townJLabel);
panel5.add(this.townField);
panel6.add(postcodeJLabel);
panel6.add(this.postcodeField);
panel7.add(enterBtn);
add(panel1);
add(panel2);
add(panel3);
add(panel4);
add(panel5);
add(panel6);
add(panel7);
enterBtn.addActionListener(this);
}发布于 2013-04-22 17:49:38
我使用Swing已经有一段时间了,但是它的架构看起来是这样的:

在底部有一个面板,它是BorderLayout
的面板,您添加了一个包含
这可能会给你一个想法,你可以尝试这些不同的面板来实现你想要的
发布于 2013-04-22 17:39:59
使用多个嵌套布局管理器
这个示例看起来像一个顶级BorderLayout,在CENTER位置有滚动窗格,在NORTH位置有一行按钮(使用FlowLayout),在WEST位置有一个文本字段的GridLayout。后者可以通过使用GroupLayout来改进,它允许单独调整行和列的大小,但使用起来有点复杂。
有一个很棒的tutorial on using layout managers (不幸的是,它似乎已经从甲骨文的服务器上消失了,链接指向一个可能是暂时的副本)。
发布于 2013-04-22 17:53:58
我只会使用MigLayout进行高级页面布局,然后下拉到简单的布局管理器。它本质上是一个网格布局,但它非常容易使用。但是Miglayout不能包装项目,这显然是Swing中的设计问题。WrapLayout是一个布局管理器,它为您提供了该功能,但它可能会有问题。
http://tips4java.wordpress.com/2008/11/06/wrap-layout/
看看你提供的屏幕截图,我模拟了你想要分割它的方式。总共有9行(0-8)和3列(0-2)。对于像最上面的控件这样的东西,您将把它们“跨越”到所有三列。
对于文本,您只需将文本放在它的单独框中的第1行,第1列的名字,或第2行,第1列的姓氏,等等。
您可以对输入框执行相同的操作。
在下面的图片中,蓝色是列,橙色是行。

所以总结一下;
https://stackoverflow.com/questions/16143708
复制相似问题