我就是想让窗体里面的哦控件,随着窗体的大小变化而变化。我试了很多布局管理器。都不行,用弹簧布局写代码又太麻烦了。请高手指点一下。谢谢。
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 |