[Eclipse插件开发-001] SWT/JFACE布局入门总结
=============SWT布局管理器入门总结=======================
绝对定位:
* setBounds(int x, int y, int width, int height);
托管定位:
* setLayout(Layout layout);
* 常见的布局有FillLayout、RowLayout、GridLayout、FormLayout、StackLayout。
===========================================
常见的布局管理器:
* 所有布局都是org.eclipse.swt.widgets.Layout的子类,Layout类是一个抽象类,每个具体的布局都要继承Layout类。
* SWT中常见的布局类:
* FillLayout(充满式布局):在单行或者单列中放置相同大小的控件,是最简单的布局。
* RowLayout (行列式布局):在单行或者多行中放置控件,应用了fill、wrap和spacing等选项
* GridLayout(网格式布局):像表格一样放置控件,功能很强大,几乎能满足各种布局需要。
* FormLayout(表格式布局):与GridLayout功能差不多的布局,可以通过定义4个边的"附加值"来放置控件。
* StackLayout(堆栈式布局):类似堆栈式的布局,只显示最上方的控件。
* FillLayout、RowLayout、GridLayout、FormLayout在class org.eclipse.swt.layout.*包中,
* StackLayout在org.eclipse.swt.custom.*包中。
=============================================
----------------------|------------------------|--------------------------------
-| FillLayout(充满式布局)|
----------------------|------------------------|---------------------------------
设置控件布局的规则是:试图填充一行或一列,尽可能地充满整个面板,并且强制所有控件平均分配大小。
FillLayout不会自动拆行,也不能设置每个控件之间的间隙,但能够指定面板的四周的补白。
* 设置填充方式:type属性
layout.type=SWT.HORIZONTAL/SWT.VERTICAL;// 默认水平填充
* 设置四周补白:marginHeight、marginWidth、spacing属性
layout.marginHeight=10;// 设置上下补白高度
layout.marginWidth=10; // 设置左右补白宽度
layout.spacing=5; // 设置控件之间的间隙
=================================================
----------------------|------------------------|----------------------------------------
| RowLayout(行列式布局)|
----------------------|------------------------|----------------------------------------
RowLayout填充控件时可以折行显示,并且可以使用RowData设置某一个指定控件的大小。
* 设置折行显示:wrap属性
layout.wrap=true/false;// 默认为true
* 设置空间大小:pack属性
layout.pack=false/true;// 默认为true
* 设置填充方式:type属性
layout.type=SWT.VERTICAL/SWT.HORIZONTAL;// 默认为水平填充
* 设置是否充满整行:justify属性
layout.justify=true/false;// 默认为false
注:如果设置了layout.justify=true后,再设置layout.spacing属性,如果这时窗口足够大,该属性将不起作用。
* 设置补白和间隔:marginLeft、marginTop、marginRight、marginBottom、spacing
默认大小为3像素。
layout.marginLeft=10;
layout.marginTop=10;
layout.marginRight=10;
layout.marginBottom=10;
layout.spacing=10;
* 设置控件的大小:RowData
setLayoutData(new RowData(int width, int height));
* 设置是否等宽或等高:fill属性
水平同高,垂直同宽
layout.fill=true;// 默认为false
===================================================
----------------------|------------------------|----------------------------------------
|GridLayout(网格式布局)|
----------------------|------------------------|----------------------------------------
* 设置网格的列数:numColumns属性
layout.numColumns=3;// 默认为1列
* 设置网格等宽:makeColumnsEqualWidth属性
layout.makeColumnsEqualWidth=true;// 默认为false
* 设置补白和间隔:
marginLeft、marginTop、marginRight、marginBottom、horizontalSpacing、verticalSpacing
默认为5像素大小。
layout.marginLeft=10; // 左空白
layout.marginTop=10; // 上空白
layout.marginRight=10; // 右空白
layout.marginBottom=10; // 下空白
layout.horizontalSpacing=10;// 水平间隔
layout.verticalSpacing=10; // 垂直间隔
* 设置控件大小:GridData
注:不要重用GridData对象
* 设置单元格对齐方式:horizontalAlignment和verticalAlignment属性
1、水平对齐方式(horizontalAlignment)的样式常量(默认为SWT.BEGINNING)
* SWT.BEGINNING(或者SWT.LEFT):左对齐
* SWT.CENTER:水平居中
* SWT.END(或者SWT.RIGHT):右对齐
* SWT.FILL:水平充满整个单元格
2、垂直对齐方式(verticalAlignment)的样式常量(默认为SWT.CENTER)
* SWT.BEGINNING(或者SWT.TOP):上对齐
* SWT.CENTER:垂直居中
* SWT.END(或者SWT.BOTTOM):下对齐
* SWT.FILL:垂直充满整个单元格
* 设置缩进大小:horizontalIndent和verticalIndent属性
默认为0像素大小。
gridData.horizontalIndent=20;// 水平缩进20像素
gridData.verticalIndent=20;// 垂直缩进20像素
* 设置单元格跨行和跨列显示:horizontalSpan和verticalSpan属性
gridData.horizontalSpan=2;// 设置水平跨越两个单元格
gridData.verticalSpan=2;// 设置垂直跨越两个单元格
* 设置单元格空间的抢占方式:grabExcessHorizontalSpace和grabExcessVerticalSpace属性
可以设置当面板变化时,单元格所抢占空间的方式,默认值为false。
gridData.grabExcessHorizontalSpace=true;// 设置水平抢占
gridData.grabExcessVerticalSpace=true;// 设置垂直抢占
* 设置的控件大小:minimumWidth和minimumHeight属性
可以设置控件最小的宽度和高度。
注:这两个属性仅当grabExcessHorizontalSpace=true和grabExcessVerticalSpace=true时才生效
gridData.minimumWidth=100;// 最小宽度
gridData.minimumHeight=100;// 最小高度
注:设置了该属性值,即使窗口变小了,也不会超过这个值的大小。
* 设置控件大小:widthHint和heightHint属性
可以设置控件的长和宽。当窗口变大时,控件的大小也会随着窗口的改变而改变。
gridData.widthHint=100;// 设置宽度
gridData.heightHint=100;// 设置高度
注:设置了widthHint和heightHint属性后只是在程序刚一运行时才会起作用,而随着窗口改变,会重新计算控件的大小。
=======================================================
----------------------|------------------------|----------------------------------------
| * 样式常量对照表 |
----------------------|------------------------|----------------------------------------
创建GridData的第二种方式是使用样式常量。
样式常量对应属性值
GRAB_HORIZONTALgrabExcessHorizontalSpace=true // 设置水平抢占
GRAB_VERTICALgrabExcessVerticalSpace=true // 设置垂直抢占
//1.水平对齐方式(horizontalAlignment)的样式常量(默认为SWT.BEGINNING)
HORIZONTAL_ALIGN_BEGINNINGhorizontalAlignment=SWT.BEGINNING//左对齐
HORIZONTAL_ALIGN_CENTERhorizontalAlignment=SWT.CENTER //水平居中
HORIZONTAL_ALIGN_ENDhorizontalAlignment=SWT.END// * SWT.END(或者SWT.RIGHT):右对齐
HORIAONTAL_ALIGN_FILLhorizontalAlignment=SWT.FILL// * SWT.FILL:水平充满整个单元格
// 2、垂直对齐方式(verticalAlignment)的样式常量(默认为SWT.CENTER)
VERTICAL_ALIGN_BEGINNINGverticalAlignment=SWT.BEGINNING// * SWT.BEGINNING(或者SWT.TOP):上对齐
VERTICAL_ALIGN_CENTERverticalAlignment=SWT.CENTER// * SWT.CENTER:垂直居中
VERTICAL_ALIGN_ENDverticalAlignment=SWT.END// * SWT.END(或者SWT.BOTTOM):下对齐
VERTICAL_ALIGN_FILLverticalAlignment=SWT.FILL// * SWT.FILL:垂直充满整个单元格
FILL_BOTHhorizontalAlignment=SWT.FILL和verticalAlignment=SWT.FILL //双向抢占式
=========================================================
----------------------|------------------------|----------------------------------------
| FormLayout(表格式布局)|
----------------------|------------------------|----------------------------------------
FormLayout通过设置FormData四边的附加值(FormAttachment对象)来设置控件的布局。
一个附加值让一个控件指定的一边附加到父面板窗口类(Composite)的位置或者其他控件上。
所以,这种布局可以指定某两个控件的相对位置,并且能随着窗口的改变而改变。
* 设置补白和间隔:marginLeft、marginTop、marginRight、marginBottom、marginWidth、marginHeight、spacing
默认为0像素大小。与GridLayout不同
* 使用FormData对象
在创建FormData对象时,通常要指定4个边的位置。
formData.top = new FormAttachment(0, 60); // 设置上边框位置
formData.bottom = new FormAttachment(100, -5);// 设置下边框位置
formData.left = new FormAttachment(20, 0);// 设置左边边框位置
formData.right = new FormAttachment(100, -3);// 设置右边框位置
* 使用FormAttachment对象
* new FormAttachment(int numerator, int offset);
numerator是分子数(因为默认的分母是100),所以也可以理解为所占的百分比。
offset是偏移量,如果是正数正向偏移,若是负数则反向偏移。
* new FormAttachment(int numerator, int denominator, int offset);
numerator是分子数
denominator是分母数
offset是偏移量
* 设置控件的相对位置
在使用FormAttachment对象时,可以设置相对面板的位置,也可以设置相对一控件的位置,
可以使用FormAttachment(Control control, int offset, int alignment)构造方法。
Control为所附加的控件对象,offset是相对于控件偏移的像素数,alignment使用样式常量,
SWT.TOP、SWT.BOTTOM、SWT.LEFT、SWT.RIGHT、SWT.CENTER和SWT.DEFAULT表示是按照附加控件的哪个边开始偏移位置的。
当控件设置FormAttachment对象时,可以保证在窗口调整的情况下,控件相对位置保持不变。
=============================================================
----------------------|------------------------|----------------------------------------
|StackLayout(堆栈式布局)|
----------------------|------------------------|----------------------------------------
StackLayout堆栈式布局类似于选项卡(TabFolder),当前只显示最上方的控件。
===========================================================
----------------------|------------------------|----------------------------------------
| Eclipse插件开发系列5.SWT中的布局管理器(4) |
----------------------|------------------------|----------------------------------------
==============================================================================
常见的布局管理器:
* 所有布局都是org.eclipse.swt.widgets.Layout的子类,Layout类是一个抽象类,每个具体的布局都要继承Layout类。
* SWT中常见的布局类:
* FillLayout(充满式布局):在单行或者单列中放置相同大小的控件,是最简单的布局。
* RowLayout (行列式布局):在单行或者多行中放置控件,应用了fill、wrap和spacing等选项
* GridLayout(网格式布局):像表格一样放置控件,功能很强大,几乎能满足各种布局需要。
* FormLayout(表格式布局):与GridLayout功能差不多的布局,可以通过定义4个边的"附加值"来放置控件。
* StackLayout(堆栈式布局):类似堆栈式的布局,只显示最上方的控件。
* FillLayout、RowLayout、GridLayout、FormLayout在class org.eclipse.swt.layout.*包中,
* StackLayout在org.eclipse.swt.custom.*包中。
================================================================
[Eclipse插件开发-001] SWT/JFACE布局入门总结相关推荐
- 如何在Eclipse 3.6.2中安装swt/JFace
如何在Eclipse 3.6.2中安装swt/JFace 原文http://blog.csdn.net/nkliming/article/details/7790288 我之前一直想安装过swt,但是 ...
- java swt_JAVA从入门到精通:SWT(JFace)体验之ApplicationWindow
本文主要向大家介绍了JAVA从入门到精通的SWT(JFace)体验之ApplicationWindow,通过具体的代码向大家展示,希望对大家学习JAVA从入门到精通有所帮助. 测试代码如下: 复制代码 ...
- Eclipse 3.7 3.x SWT/Jface 开发环境搭建
Eclipse 3.7 3.x SWT/Jface 开发环境搭建 原文http://blog.csdn.net/kimsoft/article/details/7239651 1.准备工作 1.1.下 ...
- 【插件开发】—— 1 Eclipse插件开发导盲
在真正接触eclipse插件开发一个月后,对插件的开发过程以及技术要求,也有了一定的了解.遥想之前像无头苍蝇一样乱撞乱学,真心觉得浪费了不少时间.这里就总结一下学习的主要过程以及需要的资料. Ecli ...
- Eclipse 插件开发 向导
阅读目录 最近由于特殊需要,开始学习插件开发. 下面就直接弄一个简单的插件吧! 1 新建一个插件工程 2 创建自己的插件名字,这个名字最好特殊一点,一遍融合到eclipse的时候,不会发生冲突. 3 ...
- Swt/Jface中提供的dialog
Swt/Jface中提供的dialog Swt/Jface中提供了各种各样的Dialog,一般情况下就能满足我们的需求,现在把这些dialog介绍一下, 下一篇文章再继续将如何自定义Dialog 一. ...
- eclipse下搭建SWT图形界面开发环境
什么是SWT 参考:http://www.cppblog.com/baby-fly/archive/2009/10/20/99008.html 用java的人一定都知道AWT和Swing,而SWT(S ...
- SWT/JFace 同一个Label组件中显示不同的字体和字体颜色
做Eclipse插件开发中,有时候需要高亮或者突出一个label中某个字,方式如下: package com.devin.eclipse.TextStyleDemo;import org.eclips ...
- swt/jface控件的隐藏与显示
swt/jface控件的隐藏与显示部分源代码: import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; ...
最新文章
- BaseTDI.sys 瑞星卡巴冲突,导致机器蓝屏
- 遍历目录寻找指定文件
- C#基础练习(时间的三连击)
- 让delphi2010操作界面回到delphi7模式
- 【NOIP2012】旅行计划
- 51单片机外部地址c语言,cx51与c语言对单片机内部和外部资源变量和地址的定义是否兼容?为什么...
- 结婚生娃和去核电站参观,哪个更安全?
- linux下Oracle 10g的安装
- 转:vs2012远程调试功能的改进
- Asp.Net分页生成页码超链接方法
- Kettle_设置全局变量
- 马哥linux作业,马哥linux0803作业内容
- 宾馆客房管理系统的设计与实现
- 5类6类7类网线对比_超6类7类8类网线进来挨打 6类线全面测评 网速和传输速率测试...
- WORD安全模式怎么解除?
- 计算机无法识别建行网银盾,为你修复建行网银盾无法识别
【应对方案】
的详细方案_...
- Couldn't figure out the Java version of /root/.jenkins/jdk/bin/java bash: /root/.jenkins/jdk/bin/jav
- 服务器内存超频性能,服务器内存可以超频么
- 【经验总结】Centos8安装X264,X265,OPUS,AAC,FFmpeg一次性解决方案
- C#获取微信打卡数据
热门文章
- 什么是性能测试?为什么要进行性能测试?什么时候开展性能测试?性能测试流程是什么?性能测试有关术语是什么意思?
- Meta Graph Transformer: A Novel Framework for Spatial–Temporal Traffic Prediction
- 嵌入式Qt实验一(Qt开发环境的安装及服务端页面设计)
- 软件崩溃时 将堆栈信息写入dump文件, 并使用VS2010定位程序崩溃位置
- mysql upgrade 作用,【MySQL运维】使用mysql_upgrade升级MySQL
- 关于星际争霸2的发现
- Spring getBeansOfType方法 剖析及延展:获取指定类型的JavaBean
- 各种气候数据的下载(以下载青岛地区40年间月平均气温数据的下载为例)【转】...
- JUnit4.4 新特性 assertThat 使用详解
- 文档管理对人力资源部门的重要影响