Swing 布局 - 在保持组件尺寸的同时使用网格

Posted

技术标签:

【中文标题】Swing 布局 - 在保持组件尺寸的同时使用网格【英文标题】:Swing layout - Using a grid while keeping component dimensions 【发布时间】:2011-02-22 18:37:18 【问题描述】:

我想为应用程序制作一个登录栏,但我不知道如何组织一系列 JLabel 和 JTextField,以便它们在水平网格中组织没有这些相同调整大小以适应每个单元格的组件。我还想确保组件组的大小不会调整到某个宽度以下。如何实现?

编辑:感谢大家的回答。稍后我会看看 MigLayout 和 SpringLayout。由于时间限制,我将不得不使用可视化编辑器并使用空布局。组件的位置和尺寸必须手动调整,但至少它们保持原样。这是一张显示我想做的图片。

bar http://img145.imageshack.us/img145/7356/bargw.png

【问题讨论】:

【参考方案1】:

使用MigLayout 作为您的布局管理器,它非常灵活,并且很容易支持您的要求。您可以设置大小限制。如果您需要任何进一步的帮助,请使用 Swing 和 MigLayout 发布一些示例代码,显示您正在尝试做的事情,然后我会建议您如何做您想要实现的目标。

您可能需要一些“增长”的额外单元格来填充剩余空间。这可以通过列约束来实现,方法是在列之间插入“push”(由 [..] 指定)以扩大间隙。在这种情况下,您不需要任何占位符组件。 (即,[pref!]10px[40px::]push[pref!]10px[40px::])

【讨论】:

谢谢克里斯。我试试 MigLayout。【参考方案2】:

您必须使用不同的布局。 FlowLayout 或 BoxLayout 将适用于您的情况,但我建议 MigLayout 只是因为它可以满足您的所有需求并替换所有其他需求。

【讨论】:

【参考方案3】:

查看 Using Layout Managers 上的 Swing 教程部分。

SpringLayout 有一个例子可以做到这一点。

GridBagLayout 更难使用,但也支持行/列式布局。

最后,您仍然可以使用 GridLayout。只需先将文本字段添加到 JPanel,然后面板会变大,但文本字段不会。

【讨论】:

以上是关于Swing 布局 - 在保持组件尺寸的同时使用网格的主要内容,如果未能解决你的问题,请参考以下文章

Swing布局

java中常用的swing组件 (2013-10-27-163 写的日志迁移

在JAVAswing布局设置FlowLayout和GridLayout中了怎么调节组件的大小。

java中界面设计的网格布局怎样设计边距

放大图像同时保持鼠标悬停尺寸的 React 组件 - React + Bootstrap

新的 iPad 布局,但保持 iPhone 大小类布局相同