java awt GridBagLayout同CSS框模型 (Box Model)的比较


GridBagLayout功能强大但是有点复杂,我想从使用它所要达到的效果的角度加以思考,然后和CSS框模型比较, 我发现会更容易理解其各个配置属性的意义。下面是一些很好的链接:
css框模型:http://www.w3school.com.cn/css/css_boxmodel.asp
GridBag:http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html
很好的GridBag帖子:http://blog.csdn.net/piaopiaopiaopiaopiao/article/details/14164499
属性gridx,gridy,gridwidth, gridheight,fill很容易理解,这里不讨论。
=========================
先介绍weightx,weighty
UI界面由矩形单元网格组成,每个组件占用一个或多个这样的单元。那么当整个界面放大时,每个单元格该如何变动呢?GridBag支持三类方案,这是通过配置weightx,weighty实现的:
1.单元格大小不变,对应的weightx,weighty值都为0,即默认值。
2.单元格同比例放大,对应的weightx,weighty值都为相同的非0值。
3.单元格的放大与否可以设定,此时weight值不能全为0.weight值为0的单元格固定大小。非0的单元格放大。
其实weight非0时,也会影响放大的比例。比如添加按钮2时c.weightx=0.8,而在添加按钮3时c.weightx=0.2,这就会导致放大时按钮2所占区域的宽大约是按钮3所占区域的宽的0.8/0.2=4倍
(更准确地讲,只要最初图像够大,按钮2所占区域的宽已经是按钮3所占区域的宽的4倍,所以weight可以影响单元格的大小)
==========================
接下来介绍ipadx,ipady,insets,anchor
当fill为NONE时,可能出现组件比其所在单元格小的情况。这类似于CSS框模型的情况,ipadx,ipady类似于padding(差别之处在于padding是填空白,ipad使组件变大),insets类似于margin,而border对应物为Border,一般用不到。
而anchor使得我们可以确定将组件置于单元格的哪个方位,这类似于CSS设定margin-top,margin-right等配置。
===========================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值