以下是我添加标签和文字字段的代码。 我想添加它,使其[标签] [文本字段]在2列
我知道我可以通过使用gridlayout来实现它,但行数需要修复,因此有另一种方法来添加它,这样无论我添加了多少[label] [textfield],它将是2专栏
图片显示了预期的视图
但目前是[label] [textfield] [label2] [textfield2] [label3] [textfield3]
public WizardPage page1() {
WizardPage page1 = new WizardPage("1", "Page 1") {
{
JTextField txt1 = new JTextField();
JTextField txt2 = new JTextField();
JTextField txt3 = new JTextField();
JTextField txt4 = new JTextField();
txt1.setName("text1");
txt2.setName("text2");
txt3.setName("text3");
txt4.setName("text4");
txt1.setPreferredSize(new Dimension(50, 20));
txt2.setPreferredSize(new Dimension(50, 20));
txt3.setPreferredSize(new Dimension(50, 20));
txt4.setPreferredSize(new Dimension(50, 20));
add(new JLabel("text1"));
add(txt1);
add(new JLabel("text2"));
add(txt2);
add(new JLabel("text3"));
add(txt3);
add(new JLabel("text4"));
add(txt4);
}
};
return page1;
}
> public WizardPage(String title, String description){
>
> PropertyConfigurator.configure("config/log4j.properties");
> log = Logger.getLogger(WizardPage.class);
>
> _title = title;
> _description = description;
>
>
> setLayout(new FlowLayout()); );
addContainerListener(new WPContainerListener());
this.setDoubleBuffered(true);
}
答案 0 :(得分:3)
在网格中使用未指定行数的最简单方法是使用GridLayout
并将0作为行数:
setLayout(new GridLayout(0, 2));
这将产生2列,并根据需要添加行。 GridLayout
的缺点是标签和文本字段的宽度相同,可能不是您想要的。
另一种简单的方法是嵌套布局:您可以将每个标签+文本字段组合放置到JPanel,然后根据需要继续将这些面板添加到垂直BoxLayout。这两者都没有完美,并且可以产生如下布局:
label | text
-----------------
long label | text
如果您需要一个可以使列和行具有不同宽度的网格,请研究其他基于网格的布局:GridBagLayout附带标准库,并且能够使用此类网格,但使用起来有点复杂。如果您发现自己制作了大量此类布局,请考虑使用第三方布局管理器,例如MiGLayout。