FormLayout表格布局

总结:

(1)

FormLayout用的data类是:FormData。

FormData用另外一 个类来控制窗口小部件的大小和位置: FormAttachment。

一个FormData最多用4个FormAttachment,它们分别对应这个小部件的4个面:顶部,底部,左边和右边

FormLayout通过设置FormData四边的附加值(FormAttachment对象)来设置控件的布局。

一个附加值让一个控件指定的一边附加到父面板容器类(Composite)的位置或者其他控件上。

所以这种布局可以指定某两个控件的相对位置,并且能够随着窗口的改变而改变。

(2)

原型:FormAttachment(int numerator, int denominator, int offset)
解释:numerator分子,denominator分母,offset偏移量
实例:formData.top=new FormAttachment(30,60,0);
实例解释:分子为30,分母为60,偏移量为0
实例意义:按钮保持与顶部1/2的距离,无论怎么改变窗口大小都是1/2

 

原型:FormAttachment(int numerator, int offset)
解释:指定numerator分子和 offset偏移量,默认100的分母
实例:formData.bottom=new FormAttachment(100,-5);
实例解释:分子为100,反向偏移5个单位,偏移量为5

实例意义:控件距离窗口底部始终5个距离

(3)

 

formData.bottom=new FormAttachment(100,-15);

//设置下边框的位置,距离下边框有15像素。始终不变

formData.right=new FormAttachment(100,-80);

//设置右边框的位置,(反向偏移)距离右边框有80像素。始终不变

(4)

formData2.left=new FormAttachment(bt1,20,SWT.RIGHT);

//按钮2在按钮1的右边,距离按钮1有20个像素。

1.FormData有公共成员属性height和width用来改变按钮的大小。

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
public class A{
	public static void main(String[] args){
		Display display=new Display();
		Shell shell=new Shell(display);
		shell.setText("FormLayout表格布局");
		//FormLayout用的data类是:FormData。
		//FormData用另外一 个类来控制窗口小部件的大小和位置: FormAttachment。
		//一个FormData最多用4个FormAttachment,它们分别对应这个小部件的4个面:顶部,底部,左边和右 边
		
		//FormLayout通过设置FormData四边的附加值(FormAttachment对象)来设置控件的布局。
		//一个附加值让一个控件指定的一边附加到负面版容器类(Composite)的位置或者其他控件上。
		//所以这种布局可以指定某两个控件的相对位置,并且能够随着窗口的改变而改变。
		
		//创建FormLayout对象
		FormLayout formLayout=new FormLayout();
		formLayout.marginHeight=5;//设置上下补白为5个像素
		formLayout.marginWidth=5;//设置左右补白为5个像素
		shell.setLayout(formLayout);
		
		//创建FormData对象
		FormData formData=new FormData();
		//FormData有公共成员属性height和width用来改变按钮的大小
		formData.width=100;
		formData.height=100;
		Button bt1=new Button(shell,SWT.PUSH);
		bt1.setText("按钮1");
		bt1.setLayoutData(formData);

		//打开窗口,进行窗口的显示
		shell.setSize(280,200);
		//shell.pack();
		shell.open();
		while(!shell.isDisposed()){
			//当窗口没有被释放的时候
			if(!display.readAndDispatch()){
				display.sleep();
			}		
		}
		display.dispose();
	}
}

2.FormData用另外一 个类来控制窗口小部件的大小和位置: FormAttachment。使用FormAttachment对象1。

原型:FormAttachment(int numerator, int denominator, int offset)
解释:numerator分子,denominator分母,offset偏移量
实例:formData.top=new FormAttachment(30,60,0);
实例解释:分子为30,分母为60,偏移量为0
实例意义:按钮保持与顶部1/2的距离,无论怎么改变窗口大小都是1/2

 

原型:FormAttachment(int numerator, int offset)
解释:指定numerator分子和 offset偏移量,默认100的分母
实例:formData.bottom=new FormAttachment(100,-5);
实例解释:分子为100,反向偏移5个单位,偏移量为5
实例意义:控件距离窗口底部始终5个距离

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
public class B{
	public static void main(String[] args){
		Display display=new Display();
		Shell shell=new Shell(display);
		shell.setText("FormLayout表格布局");
		//FormLayout用的data类是:FormData。
		//FormData用另外一 个类来控制窗口小部件的大小和位置: FormAttachment。
		//一个FormData最多用4个FormAttachment,它们分别对应这个小部件的4个面:顶部,底部,左边和右 边
		
		//FormLayout通过设置FormData四边的附加值(FormAttachment对象)来设置控件的布局。
		//一个附加值让一个控件指定的一边附加到负面版容器类(Composite)的位置或者其他控件上。
		//所以这种布局可以指定某两个控件的相对位置,并且能够随着窗口的改变而改变。
		
		//创建FormLayout对象
		FormLayout formLayout=new FormLayout();
		formLayout.marginHeight=5;//设置上下补白为5个像素
		formLayout.marginWidth=5;//设置左右补白为5个像素
		shell.setLayout(formLayout);
		
		//创建FormData对象
		FormData formData=new FormData();
		
		//设置控件的上边框的位置
		//FormAttachment(int numerator, int denominator, int offset)
		//numerator分子,denominator分母,offset偏移量
		formData.top=new FormAttachment(30,60,0);
		//分子为30,分母为60,偏移量为0
		//意义:按钮保持与顶部1/2的距离,无论怎么改变窗口大小都是1/2
		//formData.top=new FormAttachment(30,70,60);
		
		
		//设置控件的下边框的位置
		//FormAttachment(int numerator, int offset)
		//指定numerator分子和 offset偏移量,默认100的分母
		formData.bottom=new FormAttachment(100,-5);
		//分子为100,偏移量为5
		//意义:控件距离窗口底部始终5个距离
		
		Button bt1=new Button(shell,SWT.PUSH);
		bt1.setText("bt1");				
		bt1.setLayoutData(formData);

		//打开窗口,进行窗口的显示
		shell.setSize(300,100);//width,height
		//shell.pack();
		shell.open();
		while(!shell.isDisposed()){
			//当窗口没有被释放的时候
			if(!display.readAndDispatch()){
				display.sleep();
			}		
		}
		display.dispose();
	}
}

3.使用FormAttachment对象(2)。

FormAttachment(int numerator, int offset)
//指定numerator分子和 offset偏移量,默认100的分母

formData.bottom=new FormAttachment(100,-15);

//设置下边框的位置,距离下边框有15像素。始终不变

formData.right=new FormAttachment(100,-80);

//设置右边框的位置,(反向偏移)距离右边框有80像素。始终不变

 

import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.*; import org.eclipse.swt.layout.*; public class C{ public static void main(String[] args){ Display display=new Display(); Shell shell=new Shell(display); shell.setText("FormLayout表格布局"); FormLayout formLayout=new FormLayout(); shell.setLayout(formLayout); //FormAttachment(int numerator, int offset) //指定numerator分子和 offset偏移量,默认100的分母 //创建FormData对象 FormData formData=new FormData(); //设置上边框的位置,距离上边框有0/100+60像素=60像素。始终不变 formData.top=new FormAttachment(0,60); //设置下边框的位置,距离下边框有15像素。始终不变 formData.bottom=new FormAttachment(100,-15); //设置左边框的位置,距离左边框恒为20/100即1/5的距离。随着窗口的变化而变化 formData.left=new FormAttachment(20,0); //设置右边框的位置,距离右边框有80像素。始终不变 formData.right=new FormAttachment(100,-80); Button bt1=new Button(shell,SWT.PUSH); bt1.setText("按钮1"); bt1.setLayoutData(formData); //打开窗口,进行窗口的显示 //shell.setSize(400,400); shell.pack(); shell.open(); while(!shell.isDisposed()){ //当窗口没有被释放的时候 if(!display.readAndDispatch()){ display.sleep(); } } display.dispose(); } }

4.设置控件的相对位置。

FormAttachment(Control,int offset,int alignment);

formData2.left=new FormAttachment(bt1,20,SWT.RIGHT);
按钮2在按钮1的右边,距离按钮1有20个像素。

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
public class D{
	public static void main(String[] args){
		Display display=new Display();
		Shell shell=new Shell(display);
		shell.setText("FormLayout表格布局");
		
		FormLayout formLayout=new FormLayout();
		shell.setLayout(formLayout);
	
		//FormAttachment(int numerator, int offset)
		//指定numerator分子和 offset偏移量,默认100的分母
	
		Button bt1=new Button(shell,SWT.PUSH);
		bt1.setText("按钮1");
		//创建FormData对象
		FormData formData=new FormData();
		
		//设置上边框的位置,距离上边框20/100,即1/5的距离
		formData.top=new FormAttachment(20,0);	
		
		//设置左边框的位置,距离左边20/100,即1/5的距离,反向偏移(向左偏移10个单位)
		formData.left=new FormAttachment(20,-10);
		
		bt1.setLayoutData(formData);
		
		Button bt2=new Button(shell,SWT.PUSH);
		bt2.setText("按钮2");
		//创建FormData对象
		FormData formData2=new FormData();
		//设置上边框的位置,距离上边框20/100,即1/5的距离
		formData2.top=new FormAttachment(20,0);	
		//设置左边框的位置,距离bt1右边距20个像素,且20个像素大小不随着窗口大小的改变而改变
		formData2.left=new FormAttachment(bt1,20,SWT.RIGHT);
		bt2.setLayoutData(formData2);
		
		//打开窗口,进行窗口的显示
		shell.setSize(300,100);
		//shell.pack();
		shell.open();
		while(!shell.isDisposed()){
			//当窗口没有被释放的时候
			if(!display.readAndDispatch()){
				display.sleep();
			}		
		}
		display.dispose();
	}
}


 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值