GridBagLayout如何工作?

时间:2014-07-01 08:17:33

标签: java swing layout layout-manager gridbaglayout

我是GridBagLayout主题的新手,我无法理解约束weightfill之间的确切区别。

我可fill而无需指定weight

  

除非您为weightx或weighty指定至少一个非零值,   所有组件在其容器的中心聚集在一起。   这是因为当重量为0.0(默认值)时,   GridBagLayout在其单元格和网格之间放置任何额外的空间   容器的边缘。

我的问题是,如果这是真的,那么为什么组件之间没有空间并且它们看起来是附加的?

2 个答案:

答案 0 :(得分:7)

weightx/y指定"重量"给定的细胞会有。重量越大,细胞占据的空间越大。可用空间量是在布置所有其他组件后剩余的剩余空间。

fill确定组件如何扩展以占用给定单元格可用的空间。也就是说,如果同一列中有两个组件,则可以将fill设置为HORIZONTALBOTH,以允许组件进行扩展&#34 ;填充列的可用空间,例如......

Short Long

这显然也适用于同一行中的组件并使用VERTICALBOTH

Short按钮设置为fill BOTH并将weightxweighty设置为1的示例。短按钮想要占用容器的所有剩余空间。

Weighted

请确保您已阅读How to Use GridBagLayout了解详情

  

我的问题是,如果这是真的,那么为什么组件之间没有空间并且它们看起来是附加的?

GridBagLayout默认情况下不会在组件之间添加任何间距,但您可以通过insets属性

指定间距

答案 1 :(得分:2)

"重量"是组件需要多少额外的地方 "填写"是组件是否必须填充额外的位置(组件是否应该扩展以填充整个位置)。如果它不应该填补额外的地方,你可以使用"锚"确定组件的位置(左边界,右边界,居中)