0

我无法决定在 JPanel 上使用哪种布局。我需要 JPanel 看起来像我在这里尝试绘制的东西。

|-----------------------|
|       Some JLabel     |
|                       |
|  JLabel |JTextField|  |
|  JLabel |JTextField|  |
|  JLabel |JTextField|  |
|-----------------------|

我正在考虑使用 FlowLayout,但我不知道如何手动将组件设置为下一行。我尝试了 GridLayout,并取得了一些成功,但并不完全符合我的要求。如果有帮助,这是我目前拥有的这个 JPanel 的代码。

JPanel mainPanel = new JPanel();
mainPanel.setLayout(new GridLayout(4, 1));
JLabel description = new JLabel("description..");

JLabel label1 = new JLabel("label1");
JLabel label2 = new JLabel("label2");
JLabel label3 = new JLabel("label3");       

JTextField field1 = new JTextField(25);
JTextField field2 = new JTextField(25);
JTextField field3 = new JTextField(25);

mainPanel.add(description);
mainPanel.add(label1);
mainPanel.add(field1);
mainPanel.add(label2);
mainPanel.add(field2);
mainPanel.add(label3);
mainPanel.add(field3);

谢谢!

4

2 回答 2

3

您永远不会被迫只使用一个布局管理器。您可以使用多个面板,每个面板都有自己的布局管理器。

但是,在您的情况下, GridBagLayout 在这种情况下可能是最简单的。首先阅读 Swing 教程中有关如何使用 GridbagLayout的工作示例和所有约束的解释部分。

于 2013-10-31T05:12:05.053 回答
2

您可以使用 aGridBagLayout来实现这一点,但简单地使用 a 可能更容易BorderLayout,将标题放置在该NORTH位置并放置另一个带有字段的面板,GridLayout在该CENTER位置使用 a。

当然,最终结果将归结为您想要的。

查看A Visual Guide to Layout Managers了解更多想法,不要害怕使用复合布局

于 2013-10-31T05:11:45.660 回答