总结:
(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();
}
}