如何在 FlowLayout 或 GridLayout 中手动放置组件



我在决定在 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);

谢谢!

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

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

您可以使用

GridBagLayout来实现此目的,但简单地使用BorderLayout可能会更容易,将标题放在NORTH位置,并在CENTER位置使用GridLayout放置另一个带有字段的面板。

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

查看布局管理器的可视化指南以获取更多想法,不要害怕使用复合布局

相关内容

  • 没有找到相关文章

最新更新