SWT设置文本随窗体大小变化

以下为转载自 http://group.gimoo.net/review/35855?pg=40的内容
我就是想让窗体里面的哦控件,随着窗体的大小变化而变化。我试了很多布局管理器。都不行,用弹簧布局写代码又太麻烦了。请高手指点一下。谢谢。
 
zuhabo回复于28日18点59分 
楼上给位已经给了你一个笼统的答案,感兴趣的话,你可以自己去试试; 

这里我主要介绍其中两种布局,肯定可以满足你的要求: 
1.GridLayout布局 
比较重要的属性有 
GridData.FILL 通常与GridData类的对象属性horizontalAlignment和verticalAlignment配合使用,充满对象属性指定的空间。 
GridData. FILL_HORIZONTAL 水平充满,组件充满网格水平方向的空间。 
GridData. FILL_VERTICAL 垂直充满,组件充满网格垂直方向的空间。 
GridData. FILL_BOTH 双向充满,组件充满水平和垂直方向的空间。 

配合以下两种属性 
grabExcessHorizontalSpace 抢占额外的水平空间。 
grabExcessVerticalSpace 抢占额外的垂直空间。 

既可以达到楼主要的效果了, 
具体实例代码如下: 

Text t1=new Text(shell,SWT.BORDER); 
t1.setText("文本框 1"); 
gridData = new GridData(); 
gridData.verticalSpan = 2; //跨两行 
gridData.horizontalSpan=2; //跨两列 
gridData.verticalAlignment = GridData.FILL; //垂直方向充满 
gridData.grabExcessVerticalSpace = true; //抢占垂直方向额外空间 
gridData.horizontalAlignment = GridData.FILL;//水平方向充满 
gridData.grabExcessHorizontalSpace = true;//抢占水平方向额外空间 
t1.setLayoutData(gridData); //gridData用于文本框t1 

============================================================================== 
2.FormLayout布局 
比较重要的类:FormData和FormAttachment 

Attachment 的含义是附着、粘贴。FormAttachment 类就是用来指定组件在父容器中的 
粘贴位置。FormAttachment 计算组件粘贴位置和组件大小的方法是依据下面的表达式: 
y = ax + b 
表达式中y 是纵坐标,从上往下是正方向;x 是横坐标,从左至右是正方向;a 是斜率 
(a=m/n,n≠0),b 是偏移量,沿x、y轴正方向的偏移量为正,反之为负。 

具体实例: 

FormAttachment formAttachment=new FormAttachment(b1); //指定B1为参照物 
FormData formData2=new FormData(50,30); //创建FormData对象,宽度50,高度30 
formData2.left=formAttachment; //b2的左边紧贴与b1的右边 
b2.setLayoutData(formData2); //设置b2的布局数据为formData2 

Button b3=new Button(shell,SWT.PUSH); 
b3.setText("B3"); 
FormData formData3=new FormData();//创建布局数据对象formData3 
formData3.top=new FormAttachment(b2,10,SWT.BOTTOM);//b2的底边与b3的顶部距离为10 
formData3.left=new FormAttachment(b2,0,SWT.LEFT);//b2的左边与b3左边位移为0, 
//即左边对齐 
formData3.right=new FormAttachment(b2,0,SWT.RIGHT); //b2的右边与b3右边对齐 
b3.setLayoutData(formData3); //设置b3的布局数据为formData3 

更详细的例子可以参照《Java程序设计之swt教程》,我的资源空间里有 
 
yaba1234回复于28日19点59分 
GridLayout
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值