SWT中的布局之-----FormLayout(表格式布局)

1.使用marginWidth,marginHeight设置边距

这两个属性用来设置容器的左边距和上边距(单位:像素).下面给出一个具体的实例:

 1 public class FormLayout1 {
 2     public static void main(String[] args) {
 3         final Display display = Display.getDefault();
 4         final Shell shell = new Shell();
 5         shell.setSize(327, 253);
 6         shell.setText("SWT Application");
 7         // ------------------新插入的界面核心代码------------------------
 8         FormLayout formLayout = new FormLayout();
 9         formLayout.marginWidth = 100;
10         formLayout.marginHeight = 50;
11         shell.setLayout(formLayout);
12         new Button(shell, SWT.NONE).setText("button1");
13         // ------------------END---------------------------------------------
14         shell.layout();
15         shell.open();
16         while (!shell.isDisposed()) {
17             if (!display.readAndDispatch()) {
18                 display.sleep();
19             }
20         }
21     }
22 }

2.使用FormData的构造函数

FromLayout也有自己的布局数据类FormData,它的使用方法是:new FormData()或者new FormData(int width,int height)

 1 public class FormData1 {
 2     public static void main(String[] args) {
 3         final Display display = Display.getDefault();
 4         final Shell shell = new Shell();
 5         shell.setSize(327, 253);
 6         shell.setText("SWT Application");
 7         // ------------------新插入的界面核心代码------------------------
 8         shell.setLayout(new FormLayout());
 9         // new FormData ()
10         Button button1 = new Button(shell, SWT.NONE);
11         button1.setText("button1");
12         FormData formData = new FormData();
13         button1.setLayoutData(formData);
14         // new FormData (int width, int height),单位:像素
15         Button button2 = new Button(shell, SWT.NONE);
16         button2.setText("button2");
17         FormData formData2 = new FormData(200, 50);// button2变成200长,50宽
18         button2.setLayoutData(formData2);
19         // ------------------END---------------------------------------------
20         shell.layout();
21         shell.open();
22         while (!shell.isDisposed()) {
23             if (!display.readAndDispatch()) {
24                 display.sleep();
25             }
26         }
27     }
28 }

3.FormAttachment类的用法:

FromAttachment是在FormData下的,更进一步的布局数据类.它的用法体现在他不同的构造函数中.

(1) new FormAttachment(int numerator,int offset)

  button1的顶边(fromData.top)离shell容器的空白边距是shell容器总体空白长度的60%.

  偏移的点数(points)为0,效果如下:

 1         //>>>>>>>>>>>>>>>华丽丽的分割线>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 2         shell.setLayout(new FormLayout());
 3         new Text(shell, SWT.BORDER).setText("text1");
 4         //将button1应用FormData
 5         Button button1 = new Button(shell, SWT.NONE);
 6         button1.setText("button1");
 7
 8         FormData formData = new FormData();
 9         formData.top = new FormAttachment(60, 0); // button1的顶端应用FormAttachment设置
10         button1.setLayoutData(formData);
11
12         //>>>>>>>>>>>>>>>华丽丽的分割线>>>>>>>>>>>>>>>>>>>>>>>>>>>>

如果改成了 formData.top = new FormAttachment(60, 30)

从图中更以看出FormAttachment(60,30)是先按照FormAttachment(60,0)

的方式布局后,再下移动10个像素.这个地方有一个布局的次序.

new FormAttachment(int numerator)相当于new FormAttachment(int numerator,int offset)

当offset=0时,new FormAttachment(int numerator,int offset)相当于FormAttachmetn(int numerator,int denominator,int offset)当denominator(分母的意思)=100时,其中denominator是分母,例如FormAttachment(30,50,0)就是长度比例为30/50=60%,也就是和FormAttachment(60,0)的效果是一样的.

(2) new FormAttachment(Control control,int offset,int alignment)

  参数1是一个Control类,一般在使用的时候,都传入一个组件(如文本框来做参数),应用此FormAttachment的组件将

  依据参数1的contorl为基准来布局,offset为离control偏移量(单位:像素),alignment为对齐方式.

  下面给出一个例子:

 1         //======================华丽丽的分割线===========================
 2         shell.setLayout(new FormLayout());
 3         Text text1 = new Text(shell, SWT.BORDER);
 4         text1.setLayoutData(new FormData(100, 50));
 5         //定义并设置FormData
 6         FormData formData = new FormData();
 7         //以text1为基准偏移50像素
 8         FormAttachment formAttachment = new FormAttachment(text1,50);
 9         formData.top = formAttachment;
10         formData.left = formAttachment;
11         // 将button1应用FormData
12         Button button1 = new Button(shell, SWT.NONE);
13         button1.setText("button1");
14         button1.setLayoutData(formData);
15         //======================华丽丽的分割线===========================

new FormAttachment(text1,50,int alignment)中alignment的设置的效果如图所示,

表中的效果的程序就是按照上面的代码为基础修改"FormAttachment formAttachment = new FormAttachment(text1,50);"

这一句得到的.

时间: 2024-10-06 04:52:40

SWT中的布局之-----FormLayout(表格式布局)的相关文章

样式表 格式布局

一.样式表 1.分类 (1)内联样式表 即在body里面设置style. (2)内嵌样式表 即在head里面设置style. (3)外部样式表 即在CSS里面设置style. 2.选择器 (1)标签选择器.用标签名做选择器. (2)class选择器.都是以“.”开头. (3)ID选择器.以“#”开头. (4)复合选择器   用“,”隔开,表示并列. 用空格隔开,表示后代.相当于共有的. 筛选“.”. 二.样式属性 (一)背景与前景 2.前景字体: (二)边界和边框 (三) 链接的style:  

表格式布局让每个列高度等于该行最大高度

通常横向布局时采用float浮动布局 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> .left, .right { float: left; border: 1px solid #f40; } </style> </head> <body> <div cl

关于SWT中的布局

组件装在容器里,那么这些组件是如何布局的呢?在这之前所有的例子都素使用setBounds来 进行绝对坐标的定位的. 在实际应用过程中大都是采用布局管理器的方式来布局容器中的组件. 布局管理器定义了组件的摆放方式. 为什么VB,Delphi程序不需要布局管理器,而Java GUI程序却需要的呢? 因为Java开发程序的目标是要跨平台的.而每一个操作系统的屏幕定义是不同的. 如果像VB,Delphi那样使用绝对坐标定位界面组件,那么在Windows下看着好好的界面,到了Linux和MacOS上就会变

Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)

应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create or replace type splitTable is table of varchar2(100); 2.创建函数fn_splitString(功能是将字符串分割成多条记录)--测试语句select * from table(fn_splitString('ernanyinv','nan'))

在oracle,mysql,sqlserver中,对要求取表的行数的语法格式

在oracle中如果我们要求取表的前几行,用关键字rownum 例: select * from student where rownum<=10 得出的结果是取出student表中的前10行 在mysql中,用关键字limit 例:select * from student limit 10 得出的结果是取出前10行数据 或    select * from student limit 1,2 表示从第一行后的两行数据,即取出的是第二行与第三行数据 在sqlserver中,用关键字top 例:

构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(55)-工作流设计-表单布局

前言:这一节比较有趣.基本纯UI,但是不是很复杂 有了实现表单的打印和更加符合流程表单方式,我们必须自定义布局来适合业务场景打印!我们想要什么效果?看下图 (我们没有布局之前的表单和设置布局后的表单) 改变后的布局 本节知识点: easyui draggable 与 resizable 的结合使用(拖动与设置大小) 在Form添加Action Action提取来自48节的Create代码.改下名称 [SupportFilter(ActionName = "Edit")] public

基于表单布局:分析过时的table结构与当下的div结构

一些话在前面 最近做了百度前端学院一个小任务,其中涉及到表单布局的问题, 它要处理的布局问题:左边的标签要右对齐,右边的输入框.单选按钮等要实现左对齐. 从开始入门就被告知table布局已经过时了,当时只知道其然不知其所以然,于是我尝试用了div布局和table布局两种解法. 先上效果图: table布局表单 HTML结构: <form action="" class="clearfix" id="reg"> <table cl

sqlite学习笔记8:C语言中使用sqlite之创建表

前面已经说了如何打开和关闭数据库,这次要说得是如何执行SQL语句,来创建一张表. 要用的的函数: sqlite3_exec(sqlite3* db, const char *sql, sqlite_callback callback, void *data, char **errmsg) 参数: db:已经打开的数据库实例 sql:SQL语句,是一个字符串 callback:是一个回调函数 data:做为回调函数的第一个参数 errmsg:用于带回错误信息 该回调函数有两种返回值类型. 1.返回

SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)

1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地址码 . FlightID Varchar(10) NULL, --航班号) 2/ 建立存储过程 USE DF17DataProIF EXISTS (SELECT * FROM SYS.PROCEDURES WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[BulkDataP