我想为应用程序创建一个登录栏,我无法弄清楚如何组织一系列JLabel和JTextField,以便它们在水平网格中组织,而不用这些调整组件大小以适合每个单元格。我还想确保组件组的大小不超过一定宽度。如何实现这一目标?
编辑:感谢大家的答案。我稍后会看看MigLayout和SpringLayout。由于时间限制,我将不得不使用Visual Editor并使用null布局。元件的位置和尺寸必须手动调整,但至少要保持不变。这是一张显示我想要做的图片。
答案 0 :(得分:3)
使用MigLayout作为布局管理器,它非常灵活,并且非常容易支持您所要求的内容。您可以设置大小限制。如果您需要任何进一步的帮助,请使用Swing和MigLayout发布一些示例代码,其中显示您正在尝试执行的操作,然后我将建议您如何执行您想要实现的目标。
你可能想要一些“成长”的额外细胞来填补剩余的空间。这可以通过列约束来实现,方法是在列之间插入“push”(由[..]指定)以扩大间隙。在这种情况下,您不需要任何占位符组件。 (即[pref!] 10px [40px ::] push [pref!] 10px [40px ::])
答案 1 :(得分:2)
您必须使用不同的布局。 FlowLayout或BoxLayout将适用于您的情况,但我建议MigLayout只是因为它将满足您的所有需求并替换所有其他需求。
答案 2 :(得分:2)
查看Using Layout Managers上的Swing教程中的部分。
SpringLayout有一个例子可以说明这一点。
GridBagLayout更难以使用,但也支持行/列类型布局。
最后,您仍然可以使用GridLayout。只需先将文本字段添加到JPanel,然后面板将增长,但文本字段不会。