组件装在容器里,那么这些组件是如何布局的呢?在这之前所有的例子都是使用setBounds来 进行绝对坐标的定位的.

在实际应用过程中大都是采用布局管理器的方式来布局容器中的组件.

布局管理器定义了组件的摆放方式.

为什么VB,Delphi程序不需要布局管理器,而Java GUI程序却需要的呢?

因为Java开发程序的目标是要跨平台的.而每一个操作系统的屏幕定义是不同的.

如果像VB,Delphi那样使用绝对坐标定位界面组件,那么在Windows下看着好好的界面,到了Linux和MacOS上就会变得一塌糊涂.

除非你开发的JavaGUI程序只在Windows下用,但是即使这样,在不同分辨率下,界面的形状也会不大一样.

布局管理器:

分为:

1.充满式(FillLayout类) 充满式布局管理器,组件的大小会尽量的充满整个容器

  把组件摆放成一行或者一列,并强制组件大小一致.里面的组件都会尽量的充满这个容器.

  另外FillLayout不能折行,不能设置边界距离和间距.

  FillLayout一般使用于任务栏,工具栏,Group中的一组复选框,或者容器内只有一个组件的时候.

  如果一个Shell中只有一个Group组件,那么将FillLayout用于shell.则其内的Group将完全充满Shell.

  FillLayout虽然功能单一,但是其自动充满窗口的方式,在SWT界面设计总还是很常用的.

2.行列式(RowLayout类) 行列式布局管理器,简单的排列组件.

  RowLayout可以是组件折行显示.并可以设置边界和间距.

  另外,它还可以对每个组件通过setLayoutData方法设置RowData对象,RowData用来设置组件的大小.

  使用rowLayout.wrap控制自动拆行(默认值true)

  使用SWT.VERTICAL式样控制排列方式

  使用rowLayout.pack控制组件大小(默认值true)

  使用rowLayoutjustify控制控件伸展(默认是false)

  要想改变按钮本身的外观.则需要使用RowData类,RowData成为布局数据类.

  为RowLayout专用,在讲GridLayout类时,它也有一个专用的布局数据类GridData.

  GridData的目的也是和RowData一样,即改变容器中的组件和外观形状.

  RowData最常用的定义格式是:new RowData(int width,int heigh)

  例如:RowData rowData = new RowData(10,30)表示应用了这个rowData的组件将改变其大小,

  变成宽10像素,高30像素.

3.网格式(GridLayout类) 网格式布局管理器,非常强大,可以胜任所有的布局.

  GridLayout可能是最常用的,功能最强大的标准布局类,当然也最复杂,

  GridLayout的布局方式是把容器中的组件摆放在一个个格子里,它有许多设置项,并且同RowLayout一样也有

  专用的布局数据类GridData.GridData的使用颇为复杂,

  而GridLayout强大之处也在于它可以通过GridData来设置每一个组件外观形状.

  GridLayout类的基本实例

  使用gridLayout.numColumns设置列数(默认值1)

  使用makeColumnsEqualWidth把组件等距分开(默认false)

  使用MarginWidth,Marginheight,HorizontalSpacing,VerticalSpaciong属性

4.堆栈式(StackLayout类) 像书页一样,只显示最前面的组件.

5.表格式(FormLayout类) 表格式布局管理器,通过创建组件各个边的距离来布局组件,和GridLayout一样强大.

  使用marignWidth,marginHeight设置边距(这两个属性,来设置容器的左边距和上边距(单位:像素))

  使用FormData的构造函数(FormLayout也有自己的布局数据类,他的使用方法是new FormData()或new FormData(int width,int height))

  FormAttachment类的用法

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

关于SWT中的布局Layout的更多相关文章

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

    表格式(FormLayout类) 表格式布局管理器,通过创建组件各个边的距离来布局组件,和GridLayout一样强大. 用GridLayout与FormLayout都可以实现相同的界面效果,但有时使 ...

  2. [转]struct实例字段的内存布局(Layout)和大小(Size)

    在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Alig ...

  3. Android Studio分类整理res/Layout中的布局文件(创建子目录)

    res/layout中的布局文件太杂,没有层次感,受不了的我治好想办法解决这个问题. 前几天看博客说可以使用插件分组,可惜我没找到.知道看到另一篇博客时,才知道这个方法不能用了. 不能用插件,那就手动 ...

  4. 在JazzyViewPager中调用其它layout布局xml并使用

    开源地址:https://github.com/jfeinstein10/JazzyViewPager 发现网上的例子使用的是直接创建的一个TextView来做的.但是实际上使用,不可能只有这一个控件 ...

  5. Draw2d中的布局管理器Layout比较

    最近在研究Eclipse中的GEF开发,在跟着GEF-whole-upload教程做一个GEF应用程序的例子时,发现Figure上的控件无法显示,谷歌了很久也没找到解决方案,最后终于发现是Layout ...

  6. 源代码解析Android中View的layout布局过程

    Android中的Veiw从内存中到呈如今UI界面上须要依次经历三个阶段:量算 -> 布局 -> 画图,关于View的量算.布局.画图的整体机制可參见博文 < Android中Vie ...

  7. Android中View的layout mechanism(布局机制)

    layout mechanism Android中View的layout mechanism主要分为两个阶段:measure阶段和layout阶段.layout mechanism按照一定的顺序进行, ...

  8. SWT中各种参数大全

    1按钮组件(Button) (1)Button组件常用样式 SWT.PUSH按钮 SWT.CHECK多选按钮 SWT.RADIO单选按钮 SWT.ARROW箭头按钮 SWT.NONE默认按钮 SWT. ...

  9. Asp.Net Razor中的Consistent Layout

    有意义的参考:http://www.asp.net/web-pages/tutorials/working-with-pages/3-creating-a-consistent-look Asp.ne ...

随机推荐

  1. Zabbix探索:Zabbix API使用时的错误1

    好久没来了,最近比较疲倦,估计是从年初到现在没有休息的原因. 刚刚批量导入网络设备到Zabbix时,报错: Cannot implode expression 后面自然是IP和触发器的表达式. 最初还 ...

  2. ACM2123(一个简单的问题)

    一个简单的问题 问题说明 在这个问题中,你需要做N * N的乘法表,就像样品.第第i 行和j 个列中的元素i和j的乘积(乘积).   输入 输入的第一行是一个整数C中表示测试用例的数量,然后C的测试用 ...

  3. 【VMware虚拟机】【克隆问题】在VMware 9.0下克隆CentOS6.5虚拟机无法识别eth网卡

    [日期]2014年4月23日 [平台]windows 8 vmware workstation 9.0 centos 6.5 [日志]1)执行ifconfig命令,输出: 2)查看/etc/udev/ ...

  4. hdu4777-Rabbit Kingdom

    题意:求区间内与其他任何数都互质的数的个数. 题解:求出每个数左右互质的边界.然后对询问排序,通过树状数组求解. 讲道理真的好难啊= = http://blog.csdn.net/dyx404514/ ...

  5. 基于XML数据库的学生信息管理系统的设计与实现

    本项目是在学习之余写的,主要用来练习MVC+DAO的分层设计思想,项目基于一个简单的XML学生数据库,使用XML作为数据库的原因是其十分的小巧与方便,使用dom4j即可进行方便的解析.因为这段时间课程 ...

  6. hibernate分页实现

    1.创建分页实体类 public class PageBean { private int page; // 页码 private int rows; // 每页显示行数 private int st ...

  7. 转载 : Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结 投稿:jingxian 字体:[增加 减小] 类型:转载 时间:2013-11-14我要评论 本文是 ...

  8. mac不可或缺的套件管理器Homebrew

    Homebrew 1.简介 可以帮助我们快速安装软件, 如 brew install svn 快速卸载软件 , 如  brew uninstall svn 2.下载 打开终端, /usr/bin/ru ...

  9. .Net Core静态文件中间件StaticFiles的使用

    以前,当我们的网站需要显示图片的时候,直接在网站目录下新建文件夹,把图片放在这个文件夹下,然后通过文件夹的路径就可以访问到. 但是在.net core中不可以这样,要通过中间件StaticFiles配 ...

  10. Css基础-派生选择器

    如果要修改li strong 里面文字的颜色可以这样写样式 派生选择器: li strong { color:red; } 效果: