GridBagLayout

Posted 王小豆的烂笔头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GridBagLayout相关的知识,希望对你有一定的参考价值。

GridBagLayout:网格袋布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。每个GridBagLayout对象维持一个动态的矩形单元格(动态计算出单元格的大小),每个组件占用一个或多个单元格,该单元格被称为显示区域。每个组件显示区域按从左到右、从上到下依次排列。

GridBagConstraints:封装了若干对组件的约束属性,每个由GridBagLayout管理的组件都关联一个该约束实例,以指定组件所在显示区域的具体放置位置,以及组件在其显示区域中的对齐方式。给组件添加约束:GridBagLayout.setConstraints(Component comp, GridBagConstraints c)。

GridBagConstraints属性:

  1. gridx,gridy 组件显示区域 开始显示的位置(单元格坐标),容器左上角第一个单元格位置为 (0, 0),默认值为RELATIVE,表示放置在 “上一个组件”(所在行列最后添加的一个组件)的 “后面”。
  2. gridwidth,gridheight 组件显示区域 水平/竖直方向 所占单元格的个数,默认值为 1,如要占多行/列,需整体结果有足够的行/列。有如下两个常量特殊值可选:
    REMAINDER: 占完所在行/列余下所有单元格(该值可实现 换行 作用);
    RELATIVE: 占到所在行/列余下的倒数第二个单元格(使用该值,所在行/列的最后一个单元格需要“合理”安排组件,并手动换行)。设置该值不能导致 “前面” 或 “后面” 单元格有留空白,否则可能无效。
  3. weightx,weighty 如何分布额外空间(单元格区域外,容器边缘内的间隔),当制定行/列中的其中任意一个组件的权重大于0,则该行/列将(和其他行/列按权重比例)分配额外的水平/竖直空间。当权重为0时,则整个单元格区域居中于容器中心。
  4. fill 当显示区域大小大于组件所需要的大小时,组件在其显示区域内的填充方式。可能的值如下:NONE:不调整组件大小;HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度;VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度;BOTH:使组件完全填满其显示区域。
  5. anchor
  6. ipadx,ipady 组件的内部填充(可看做组件的内边距),即对组件最大大小的添加量。
  7. insets 组件的外部填充(可看做是组件的外边距,也可以看做是显示区域的内边距)。


以上是关于GridBagLayout的主要内容,如果未能解决你的问题,请参考以下文章