关于SWT中的布局Layout
组件装在容器里,那么这些组件是如何布局的呢?在这之前所有的例子都是使用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的更多相关文章
- SWT中的布局之-----FormLayout(表格式布局)
表格式(FormLayout类) 表格式布局管理器,通过创建组件各个边的距离来布局组件,和GridLayout一样强大. 用GridLayout与FormLayout都可以实现相同的界面效果,但有时使 ...
- [转]struct实例字段的内存布局(Layout)和大小(Size)
在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Alig ...
- Android Studio分类整理res/Layout中的布局文件(创建子目录)
res/layout中的布局文件太杂,没有层次感,受不了的我治好想办法解决这个问题. 前几天看博客说可以使用插件分组,可惜我没找到.知道看到另一篇博客时,才知道这个方法不能用了. 不能用插件,那就手动 ...
- 在JazzyViewPager中调用其它layout布局xml并使用
开源地址:https://github.com/jfeinstein10/JazzyViewPager 发现网上的例子使用的是直接创建的一个TextView来做的.但是实际上使用,不可能只有这一个控件 ...
- Draw2d中的布局管理器Layout比较
最近在研究Eclipse中的GEF开发,在跟着GEF-whole-upload教程做一个GEF应用程序的例子时,发现Figure上的控件无法显示,谷歌了很久也没找到解决方案,最后终于发现是Layout ...
- 源代码解析Android中View的layout布局过程
Android中的Veiw从内存中到呈如今UI界面上须要依次经历三个阶段:量算 -> 布局 -> 画图,关于View的量算.布局.画图的整体机制可參见博文 < Android中Vie ...
- Android中View的layout mechanism(布局机制)
layout mechanism Android中View的layout mechanism主要分为两个阶段:measure阶段和layout阶段.layout mechanism按照一定的顺序进行, ...
- SWT中各种参数大全
1按钮组件(Button) (1)Button组件常用样式 SWT.PUSH按钮 SWT.CHECK多选按钮 SWT.RADIO单选按钮 SWT.ARROW箭头按钮 SWT.NONE默认按钮 SWT. ...
- Asp.Net Razor中的Consistent Layout
有意义的参考:http://www.asp.net/web-pages/tutorials/working-with-pages/3-creating-a-consistent-look Asp.ne ...
随机推荐
- CodeForce---Educational Codeforces Round 3 USB Flash Drives (水题)解题报告
对于这题明显是用贪心算法来解决问题: 下面贴出笔者的代码: #include<cstdio> #include<iostream> #include<algorithm& ...
- Bzoj 4556: [Tjoi2016&Heoi2016]字符串
4556: [Tjoi2016&Heoi2016]字符串 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 177 Solved: 92[Sub ...
- leetcode@ [129] Sum Root to Leaf Numbers (DFS)
https://leetcode.com/problems/sum-root-to-leaf-numbers/ Given a binary tree containing digits from 0 ...
- adb pull命令复制android数据库文件.db到电脑
1.win+r cmd进入命令行 2.cd 进入[sdk]/platform-tools目录下 3.执行下面命令行,复制xxx.db到F:/dest adb pull /data/data/[pack ...
- idhttp.post方式 调用datasnap rest 远程方法
idhttp.get方式调用,这种比较简单,大家都会.post方式网上却没有任何成功的代码,本人也是摸索了一个上午才搞定. 分享给大家. (1)post方式调用的远程方法,方法名必须加“update” ...
- [iOS基础控件 - 5.1] UIScrollView
A.需要掌握 UIScrollView 是一个能够滚动的视图控件,可以用来展示大量内容,如手机的“设置” 1.常见属性 2.常用代理方法 3.缩放 4.UIScrollView和UIPageContr ...
- Android的事件处理
1 android事件处理概述 不论是桌面应用还是手机应用程序,面对最多的就是用户,经常需要处理用户的动作-------也就是需要为用户动作提供响应,这种为用户动作提供响应的机制就是事件处理.andr ...
- [置顶] Objective-C ,ios,iphone开发基础:protocol 协议(委托,代理)的声明
协议是为了弥补Objective-c中类只能单继承的缺陷,在Objective-c2.0之前当一个类遵循一个协议的时候,必须在类中实现协议的所有方法,在Objective-c2.0之后协议中的方法就有 ...
- ECSHOP在线手册之 数据库结构说明 (适用版本v2.7.3)
1.account_log 用户账目日志表 字段 类型 Null/默认 注释 log_id mediumint(8) 否 / 自增 ID 号 user_id mediumint(8) 否 / 用户登录 ...
- 取消jQuery validate验证
有时候当我们在编辑页面点保存后加上了validate错误验证后又想用表单提交的方式返回界面没有清除验证就返回不了 加上这句话就清除验证了 注意:remove()是删除了相关标签 我这需求是 ...