当前位置: 首页 > 知识库问答 >
问题:

GridBagLayout是如何工作的?

萧宏远
2023-03-14

我对GridBagLayout这一主题不熟悉,我无法理解约束、重量和填充之间的确切区别。

我可以填充而不分配权重

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

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

共有2个答案

司马钱明
2023-03-14

“重量”是指组件的额外位置
“填充”是指组件是否必须填充额外的位置(是否应扩展组件以填充整个位置)。如果它不应该填充额外的位置,可以使用“锚定”来确定组件的位置(左边界、右边界、居中)

薄高懿
2023-03-14

指定给定单元格的“重量”量。重量越大,单元格想要占用的空间就越多。可用空间量是所有其他组件布局后剩余的空间。

填充确定组件将如何展开以占用给定单元格的可用空间。也就是说,如果同一列中有两个组件,可以使用“填充”设置为“水平”或“同时”以允许组件“扩展”以填充列的可用空间,例如。。。

这显然也适用于同一行中的组件,并使用垂直或两者

例如,将“Short”(短)按钮设置为“fill”(填充),将其权重X和权重Y设置为1。短按钮想要占用容器的所有剩余空间。

确保您已通读了如何使用GridBagLayout以了解更多详细信息

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

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

 类似资料:
  • 想要这样格式化它。灰色部分显示jpanel部分。最初,我想要正确地布局前2个jpanel。这是行不通的。怎么修?

  • 我正在尝试使用,但没有得到我所期望的结果,并且在此代码中找不到错误: 这张图说明了我需要: 黄色是按钮名称,红色是行和列。 谁能解释一下我的代码出了什么问题吗?

  • 我使用了绝对定位(setBounds和null布局),现在开始练习布局管理器,这段代码是用gridbag布局的,但是很少组件没有显示,或者是单元格有一些问题,或者是其他的东西,请帮助!

  • 我正在尝试创建以下GUI: 但我制作的GUI是: 我的网格是什么样子的: Image:此文件的GRIDLAYOUT addComp adds方法在给定的(x,y)位置和给定的组件宽度和高度处将输入组件添加到输入面板。 代码:

  • 嗨,我是java初学者,正在使用GridBagLayout制作小型GUI。请参阅附带的代码和输出。我想要的是按照gridx和gridy中分配的位置将JButtons放置在左上角。但它把组件放在中心,而不是像预期的左上角,如果我使用插图,gridx/Gridy所有的工作,但不是从适当的坐标,所以请看附上的代码和图像,并指导我关于它 输出:想要左上角的按钮,请指点