GridBagLayout布局解释记录

阅读本文前,你需要①eclipse安装了windowbuilder,②已经看了几篇讲解GridBagLayout的文章,③手边有Class GridBagLayout和Class GridBagConstrains的英文API文档辅助对照。

GridBaglayout讲解:
以下,在windowbuilder(以下简称WB)的协助下对GridBagLayout(以下简称GBL)的属性做一个记录:

首先进行不含组件拉伸功能的记录,即所有weightx、weighty全为0.0,因为一旦增加了拉伸,一些属性将会被拉伸功能干扰,而无法正确表达你的意图。

1:先按照图示,简单的在WB的协助下,你可以对GBL做直接视图化的拖拽操作,使用7个button的进行如图的布局,并修改button的名字为button1~7后获得如下最终布局结果,和自动生成的一堆代码:

这是可视化布局的过程界面

这是windowbuilder自动产生的布局代码,和我的说明

这是实际运行效果,无任何拉伸能力,但能缩小,并呈现丑陋样。。。

不过还好,可以用继承的JFrame的this.setMinimumSize(new Dimension(500,500));来设定界面最小值,
但this. setMaximumSize (new Dimension(800,800));设最大无效,
可能需要设布局的最大最小方法吧,见谅,我也没搞清呢。

 

2:对代码做如下改动,目的是①改动行高行宽,②测试填充fill属性,③修改了button5的inset数组

变化后的效果

 

3:组件的 setPreferredSize(new Dimension(xx,xx));功能
该功能会导致布局对行列格子高宽的声明无效,而在组件这行、列采取组件request的数值。

 

4:手动加入组件的weightx、weighty是否为0.0或1.0,其他数字效果再说吧。
伸展确实存在传染性,一些会传染的地方,在实际中据说填充JPanel比较合适,伸展的属性没那么多异议,你看图回忆吧:
哪个组件设置weight=1.0的被标注了,打钩的组件表示协同产生了伸展,打叉的表示不会伸展。(这里的button5一开始就和上面的跨区情况不同,注意)

 

5:可以在格子中嵌套GridBagLayout,这样就能是内层格子屏蔽外层伸展,只需要内层某个格子配合外层伸展即可,并不要求内层所有格子都随外层伸展。


6:记录时的一些零散点

 

7:补上weightx,weighty的意义,关键还是看定义:这两个数据是决定了,在窗口拉伸后,如何瓜分大于原来的组件所需求的空间之外的窗口空间,即英文版API中所说:specifies how to distribute extra space。

下面一个例子说明:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

aazhoukeaa

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

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

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

打赏作者

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

抵扣说明:

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

余额充值