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
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值