j2se ui设计 与 gridbaglayout 学习笔记

GridBagLayout中有一个类叫作GridBagConstraints,这个类中的所有成员都是public的,GridBagLayout就是利用它来管理组件。    下面是GridBagConstraints中的公有成员变量
     public int anchor         对齐方式。
     public int fill           描述当容器变形时,控制组件是否增长。
     public gridheight         描述了组件所占网格的个数,gridheight描述在纵向上所占网格的个数
     Public gridwidth        描述在横向上所占网格的个数。
     public girdx              描述组件在布局时应处于那个网格位置,即描述网格x轴开始的位置。
     public gridy              同样是网格开始的位置,gridy为y轴上开始的位置。
     public Insets insets      用来调整它周围的空间大小。  // insets(4,4,4,4) 上左下右 每个控件的这个距离是分享的。
     public int ipadx          组件最小尺寸的约束条件。
     public int ipady          组件最小尺寸的约束条件。
     public double weightx     描述当容器变形时,单元格本身在x轴上(横向上)如何缩放。
     public double weighty     描述当容器变形时,单元格本身在y轴上(纵向上)如何缩放。

GridBagConstraints的RELETIVE,和REMAINDER属性, 当把gridx值设置为GridBagConstriants.RELETIVE时,在一个控件添加时,将被放置在前一个控件的右侧.同理,对gridy 值设置为GridBagConstraints.RELETIVE时,在添加控件时,将被放置在前一个控件的下方,(这是一种根据前一个控件而决定当前组控件的相对放置方式)

 

我们在往container上添加控件时候可以写类似方法:

       private void addComponet(Container cn, JComponent component,
            GridBagConstraints gbc, int x, int y, int gridwidth, int gridheight,Insets a) {
        gbc.gridx = x;
        gbc.gridy = y;
        gbc.gridwidth = gridwidth;
        gbc.gridheight = gridheight;
        gbc.insets = a ;
        cn.add(component, gbc);
    }

接下去要解决的一个问题是容器缩放时的行为.对于文本栏这个问题是最明显的,无论容器如何变形,它都保持同样的大小.文本区域应该总是跨越在容器的底部,但你肯定不希望在纵向缩放时,文本栏也纵向增长.

 

缩放的解决方法有两个,

1.调整 weightx和weighty,比如:

这两个属性都是浮点数值,描述了每个单元格在拉伸时横向或纵向等到的分配比例.
      button one 0.4
      button two 0.4
      button three 0.6
      text area 1.0
    假设你把窗体横向拉伸了10个象素,则button one横向得到10*0.4 = 4个象素,他扩展的幅度也就是没有窗体拉伸的幅度大
    button three得到了剩余的6个象素,也没有窗体拉伸的幅度大。
    为了放置纵向拉伸时,文本框的纵向扩展,你可以把weighty设置为0,否则 你也可以设置weighty的值。

但是这种方法只是按照单元格比例缩放,如果要无限扩展的话,可以把这个值搞的很大,例如100,否则选用方法2.

 

2.可以设置fill值来代替weightx,weighty来控制缩放, 值有:

GridBagConstraints.NONE 不增长
GridBagConstraints.HORIZONTAL 只横向增长
GridBagConstraints.VERTICAL 只纵向增长
GridBagConstraints.BOTH   双向增长

 

layout中的setVgap

设置空间之间垂直距离或者是控件与container边缘的距离 值为与上边缘的距离 负值为与下边缘的距离

setVgap(0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值