组件装在容器里,那么这些组件是如何布局的呢?在这之前所有的例子都是使用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. 【手机走 ipv6】

    树莓 pi 上搭了个 cow 连接美国的 VPS, cow 设置为全局代理. alwaysProxy = true 开机启动 nano /etc/rc.local /usr/local/bin/ssl ...

  2. MyEclipse的Hibernate Reverse Engineering失败解决方法

    当使用MyEclipse的Hibernate逆向工程功能时,有时出现不成功的情况,点击finish按钮后对应的源文件目录没有生产相关对象,这时应该如何解决呢? 在国内的网站找了很久没找到,最后在国外的 ...

  3. log4net使用的一点心得

    关于使用log4net的文章很多,把自己在使用中查到的文章列一下. log4net 可以存在很多地方 比如console,数据库.邮箱.文本等等.我要实现的是 所有的日志都记录到html文件中,可以按 ...

  4. 了解 MVC 应用程序执行过程

    发送给基于 ASP.NET MVC 的 Web 应用程序的请求首先通过 UrlRoutingModule 对象(一个 HTTP 模块)进行传递. 此模块将分析请求并执行路由选择. UrlRouting ...

  5. hdu4436-str2int(后缀数组 or 后缀自动机)

    题意:给你一堆字符串,仅包含数字'0'到'9'. 例如 101 123 有一个字符串集合S包含输入的N个字符串,和他们的全部字串. 操作字符串很无聊,你决定把它们转化成数字. 你可以把一个字符串转换成 ...

  6. [Objective-c 基础 - 3.3] block数据类型

    A.概念 1.block类似函数 (1)可以保存代码 (2)有返回值 (3)有形参  2.block的标志:^ // 没有参数和返回值的block void (^myblock)() = ^{ // ...

  7. Swif基本语法以及与OC比较三

         (未 经 博 主 同 意,不 得 转 载 !)   ------------------------华丽分割线----------------------- // // main.swift ...

  8. Java Web连接各种数据库方式汇总

    1.Oracle数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String ...

  9. cocos2d-x 将cocosbuilder输出文件映射成对象的原理

    转自:http://www.cnblogs.com/fox7nights/archive/2013/02/21/2920640.html 一.调用代码 CCNode* GameOverScene::l ...

  10. windows消息钩子

    1.消息钩子的概念: Windows应用程序是基于消息驱动的,不论什么线程仅仅要注冊窗体类都会有一个消息队列用于接收用户输入的消息和系统消息.为了拦截消息,Windows提出了钩子的概念.钩子(Hoo ...