我正在尝试使用java编写一个非常简单的表单,但由于swing放置组件的方式,我遇到了比预期更多的麻烦,我尝试了各种不同的布局管理器,但仍然无法按照我的方式布局表单喜欢。
以下是我希望表单的外观:link text
有没有人对如何解决这个问题有任何想法,因为我很难过?
感谢。
答案 0 :(得分:1)
最简单的目的是GridLayout。正如Aaron所说,如果你不想学习布局管理器,Netbeans有一个很好的GUI构建器。
答案 1 :(得分:1)
不使用gridbaglayout,可以通过borderlayout,gridlayout和flowlayout来实现。首先将表单分成大的视觉片段,然后将子布局置于顶级视觉片段之下。
例如,在这种情况下,我会这样做:
我在Java swing工作了4年,最初设计布局是一个障碍,但练习的次数越多越容易。
答案 2 :(得分:1)
看看Table Layout。它比几乎所有的默认布局管理器更容易使用。使用它构建表单非常简单。
答案 3 :(得分:1)
GridBagLayout起初可能令人生畏,但它非常灵活,值得了解。
JButton button = ...;
JLabel[] labels = new JLabel[] {
new JLabel("Label 1"),
...
};
JTextField[] fields = new JTextField[] {
new JTextField(15),
...
};
JPanel[] rows = new JPanel[] {
new JPanel(),
...
}
Container container = getContentPane();
container.setLayout(new GridBagLayout());
GridBagConstraints cons = new GridBagConstraints();
// Layout each row's contents(label + text field)
cons.fill = GridBagConstraints.BOTH;
cons.insets = new Insets(2, 8, 2, 8);
for (int i = 0; i < rows.length; ++i) {
rows[i].setLayout(new GridBagLayout());
// Labels get 30% of the row's extra horizontal space.
cons.weightx = 0.3;
rows[i].add(labels[i], cons);
// Text fields gets 70% of the row's extra horizontal space.
cons.weightx = 0.7;
rows[i].add(fields[i], cons);
// Add each row to the panel, top to bottom
// Each row takes up all of the horizontal space.
cons.gridx = 0;
cons.weightx = 1;
container.add(rows[i], cons);
cons.gridx = GridBagConstraints.RELATIVE;
}
// Add the button at the bottom.
// Dont let button get any extra horizontal space (so it won't stretch)
cons.gridx = 0;
cons.weightx = 0;
cons.fill = GridBagConstraints.NONE;
container.add(button, cons);
答案 4 :(得分:1)
到目前为止,我尝试过的最容易使用的布局管理器,至少是为了做类似的事情,是DesignGridLayout。有了它,代码看起来像:
layout.row().grid(new JLabel("JLabel1")).add(new JTextField());
layout.row().grid(new JLabel("JLabel2")).add(new JTextField());
...
layout.row().grid(new JLabel("JLabel5")).add(new JTextField());
layout.row().center().add(new JButton("JButton"));
答案 5 :(得分:0)
这样的表格应该非常容易设计和手工编码。继续阅读文档并一起玩。
另一种选择是使用GUI Builder,Netbeans在去年看了一眼时给我留下了深刻的印象。我不再使用Java了,所以我不能为你提供很多细节。
答案 6 :(得分:0)
我建议您使用NetBeans。 它更容易,因为它生成包含布局管理器的代码,因此您不必担心它。这对初学者来说很好。
答案 7 :(得分:0)
我会使用BorderLayout做一个主面板。
南区会有一个带有按钮的面板。
中心区域将保持一个面板,其中包含网格布局,网格包布局或某种盒子布局,可以将标签和文本框放在一起。
答案 8 :(得分:0)
我非常喜欢用于布置简单(和复杂)表单的JGoodies Forms工具。它很容易使用,并有很好的例子。如果你想要看起来很漂亮的东西,你也可以使用它们的外观和感觉。