Java GridBagLayout中的Weightx和Weighty是什么?

26

我对这两个属性有些困惑。我该如何给组件分配权重?这些数字是如何计算的?我尝试阅读了网上的几篇文章,但我还是不理解。

谢谢。

2个回答

26

如果面板内部空间大于包含的组件的preferredDimension,则使用weightx和weighty将额外空间分配给各个组件。

使用0.0到1.0的值(将其视为百分比)。

  • weightx是水平间距

  • weighty是垂直间距

在桌面上最常见的情况是侧边栏保持固定大小(weightx/weighty = 0.0),中心区域占用剩余空间(weightx/weighty = 1.0)。然而,通过变化,您可以完全控制应用程序调整单个组件大小随着Frame大小变化的方式。


7
很好,但您不必使用0.0到1.0的值。值可以是任何东西。额外的空间根据单个组件重量占行或列中所有组件总重量的百分比进行分配。 - Erick Robertson
确实。我只是建议使用0.0到1.0之间,因为这是最佳实践,并且如果以百分比术语思考,它使代码更易于阅读。 - Codemwnci
3
谢谢。如果两个按钮的 weightx 分别为 0.2 和 0.8,则其中一个按钮将占据 "20%" 的空间,另一个按钮将占据 "80%" 的空间? - LuckyLuke
3
@Andreas - 绝对是的。在优先尺寸之上的空间将以80/20的比例分配。 - Codemwnci

2
weightxweighty用于确定如何在列和行之间分配空间。这些值对于指定调整大小的行为非常重要。如果未指定任何weightx或weighty,则所有组件将聚集在容器的中心。有关更多信息,请参见GridBagLayout文档。
对于每一列,权重与该列中组件指定的最高weightx相关。类似地,每一行的权重与该行中组件指定的最高weighty相关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接