swing学习笔记:GridBagLayout

gridx,gridy

这个控制的其实就是坐标。

指定组件左上角的行和列。最左列的地址为 gridx=0,顶行的地址为 gridy=0。使用 GridBagConstraints.RELATIVE(默认值)来指定将组件放置在刚刚添加到容器中的组件的右侧(对于 gridx)或正下方(对于 gridy)。我们建议为每个组件指定 gridx 和 gridy 值,而不仅仅是使用 GridBagConstraints.RELATIVE;这往往会导致更可预测的布局。

gridwidth, gridheight

其实就是控制合并单元格用的。

指定组件显示区域中的列数(网格宽度)或行数(网格高度)。这些约束指定组件使用的单元数,而不是使用的像素数。默认值为1。

请使用GridBagConstraints.REMAINDER指定组件是其行(网格宽度)或列(网格高度)中的最后一个。
使用GridBagConstraints.RELATIVE指定该组件是其行(网格宽度)或列(网格高度)中倒数第二个组件。

我们建议为每个组件指定gridwidthgridheight值,而不仅仅是使用 GridBagConstraints.RELATIVEGridBagConstraints.REMAINDER;这往往会导致更可预测的布局。

注意:

GridBagLayout不允许组件跨越多行,除非组件位于最左边的列中,或者您为组件指定了正的gridx和gridy值。

fill

本质属于外部填充

当组件的显示区域大于组件请求的大小时,用于确定是否以及如何调整组件的大小。
有效值(定义为GridBagConstraints常量)包括

  1. NONE(默认值)
  2. HORIZONTAL(使组件足够宽以水平填充其显示区域,但不更改其高度)。
  3. VERTICAL(使其足够高以垂直填充其显示区,但不改变其宽度)和BOTH(使组件完全填充其显示面积)。
  4. BOTH 使组件完全填满其显示区域。

weight – 权重

WeightxWeighty

其实是个比值。好处就是当框架调整后,其不会变形。如果用ipad这种固定的,容易变形。

如果面板(中间容器Panel)内的空间大于所包含的组件的首选限制,则weightXweighty用于将额外的空间分配给单个组件。
使用0.0到1.0的值(认为这是一个百分比)。
weightX是水平间距
weighty是垂直间距
桌面中最常见的情况是是侧窗格保持固定尺寸(weightx/weighty= 0.0),并且中央窗格占据了剩余的空间(weightx/weighty = 1.0)。但是,使用变体(0~1之间的小数),您可以完全控制应用程序在框架大小更改时如何调整单个组件的大小。

ipadx, ipady

可看做是 组件的内边距,指定组件的最小宽度和高度。可确保组件不会过分收缩。

指定内部填充:对组件最小大小的添加量。默认值为零。
组件的宽度将至少为其最小宽度加上 ipadx2 像素,因为填充适用于组件的两侧。
同样,组件的高度将至少为其最小高度加上 ipady
2 像素。

ipad 和 weight 的区别?

ipadx 是添加到宽度的固定量。所以会影响框架打包时组件的宽度。

weightx 控制列随着包含组件的面板宽度的变化而增长/收缩的程度。因此,只有当框架可见并调整框架大小时,才会注意到效果。

参考地址:Differentiate weightx and ipadx in GridBagConstraints (Java)

insets

指定组件的外部填充(即:外边距)——组件与其显示区域边缘之间的最小空间量。该值被指定为一个 Insets 对象。默认情况下,每个组件都没有外部填充。

anchor

如果不打算填充可以通过anchor指定将组件放置在单元中的位置,缺省为将其放在单元的中部。
组件 在 显示区域内 的位置(对齐方式)

当组件小于其显示区域时使用,以确定放置组件的位置(在区域内)。

有效值(定义为 GridBagConstraints 常量)为 CENTER(默认值)PAGE_STARTPAGE_ENDLINE_STARTLINE_ENDFIRST_LINE_STARTFIRST_LINE_ENDLAST_LINE_ENDLAST_LINE_START

下面是这些值如何在具有默认的从左到右组件方向的容器中解释的图片。

绝对值相对于方向的值相对于基线的值
NORTHPAGE_STARTBASELINE
SOUTHPAGE_ENDBASELINE_LEADING
WESTLINE_STARTBASELINE_TRAILING
EASTLINE_ENDABOVE_BASELINE
NORTHWESTFIRST_LINE_STARTABOVE_BASELINE_LEADING
NORTHEASTFIRST_LINE_ENDABOVE_BASELINE_TRAILING
SOUTHWESTLAST_LINE_STARTBELOW_BASELINE
SOUTHEASTLAST_LINE_ENDBELOW_BASELINE_LEADING
CENTER(默认值)BELOW_BASELINE_TRAILING

说明:

  1. anchor其实和ipad是类似的,只不过ipad需要我们手动控制大小,而anchor是内置了些常量。

参考地址:

How to Use GridBagLayout

Java Swing GridBagLayout网格袋布局的实现

https://blog.nowcoder.net/n/42f2b40147b24f4684814650a2a947b8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鬼谣me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值