关于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下的,更进一步的布局数据类,它的用法主要体现在它不同的构造函数中.
本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4168313.html,如需转载请自行联系原作者
关于SWT中的布局Layout相关推荐
- .net托管环境下struct实例字段的内存布局(Layout)和大小(Size)
在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Alig ...
- android如何引用布局,android 动态布局与引用第三方layout中的布局
引用第三方layout中的布局LinearLayout rightContentView = (LinearLayout) findViewById(R.id.lyt_chat_content); V ...
- java swt 几种布局_实战SWT布局
fortune 阅读(577) 评论(0) 编辑 收藏 所属分类: java技术 标准的SWT布局类FillLayout:在容器中以相同的大小单行或单列的排列组件 RowLayout:以单行或多行 ...
- 自定义View:测量measure,布局layout,绘制draw
1. 什么是View 在Android的官方文档中是这样描述的:表示了用户界面的基本构建模块.一个View占用了屏幕上的一个矩形区域并且负责界面绘制和事件处理. 手机屏幕上所有看得见摸得着的都是Vie ...
- 系出名门Android(2) - 布局(Layout)和菜单(Menu)
2019独角兽企业重金招聘Python工程师标准>>> 系出名门Android(2) - 布局(Layout)和菜单(Menu) 作者:webabcd 介绍 在 Android 中各 ...
- Android Studio xml文件中的布局预览视图
操作系统:Windows 10 x64 IDE:Android Studio 3.3.1 更新了Android Studio之后,xml文件中的布局预览视图变得如此简洁! 原因是没有勾选Show La ...
- 在Swing和Swt中使用JavaFX
转载自 在Swing和Swt中使用JavaFX 本人从08年12月份,JavaFX发布第一个版本开始关注它的发展. 算算到现在,也差不多是第五个年头了.期间经历了一些动荡,但JavaFX还是坚持着发 ...
- Magento布局layout.xml文件详解
解析顺序 布局xml文件一般位于app/design/{area}/{package}/{theme}/layout/目录下.Layout文件一般包含block.reference.action三种标 ...
- 关于SWT中的表格(TableViewer类)
JFace是SWT的扩展.它提供了一组功能强大的界面组件.其中包含表格,树,列表.对话框,向导对话框等. 表格是一种在软件系统中很常用的数据表现形式.特别是基于数据库的应用系统.表格更是不可缺少的界面 ...
最新文章
- 深入分析python的and or 返回值
- no persister for
- 云安全:云访问安全代理(CASB)系统的陷阱和潜力
- 邻接矩阵实现图的深度优先搜索(1)
- React Native windows环境安装遇到的坑
- 无限踩坑系列(4)-远程登入服务器
- Flex 最全的换行 制表符 回车 空格 特殊符号
- 一个精仿今日头条项目
- QT_布局管理器 网格布局管理器 QGridLayout 超简单
- 【Clover】服务器环境中通过Clover boot引导黑群晖DSM(Linux)+Win系统的解决方案与常见bug排查
- 盘点2017年科技事件 马云最娱乐雷军最傲娇
- 2022年国产操作系统发展现状
- Html+JavaScript猜数字游戏
- 基于VaR模型与CAPM模型的个股日收益率分析报告——以宁德时代(300750)为例
- 常用动画特效 - CSS实现
- 新闻主题分类任务NLP
- 涂鸦智能进击南美取暖器市场
- 一次设置,终生屏蔽cdsn
- 【Audio】Unity音频模块:加载、转换、剪切、混音、合并
- BIM技术在住宅园区物业管理中的应用及其优势
热门文章
- Android多模块覆盖率,Android代码覆盖率初探—问题已解决!
- 什么是栈,栈存储结构详情
- mysql如果索引为uid间隙锁_mysql 开发进阶篇系列 10 锁问题 (使用“索引或间隙锁”的锁冲突)...
- php随机数字不重复,php生成N个不重复的随机数
- css3动画-animation
- macos自带java_在 MacOS 上安装 Java - Java 入门教程
- 学密码学一定得学程序
- qt opencv cmake配置 单纯小白
- 【数学与算法】PCA主成分分析(降维)的通俗理解
- 深度学习与计算机视觉系列(7)_神经网络数据预处理,正则化与损失函数