=============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布局入门总结相关推荐

  1. 如何在Eclipse 3.6.2中安装swt/JFace

    如何在Eclipse 3.6.2中安装swt/JFace 原文http://blog.csdn.net/nkliming/article/details/7790288 我之前一直想安装过swt,但是 ...

  2. java swt_JAVA从入门到精通:SWT(JFace)体验之ApplicationWindow

    本文主要向大家介绍了JAVA从入门到精通的SWT(JFace)体验之ApplicationWindow,通过具体的代码向大家展示,希望对大家学习JAVA从入门到精通有所帮助. 测试代码如下: 复制代码 ...

  3. 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.下 ...

  4. 【插件开发】—— 1 Eclipse插件开发导盲

    在真正接触eclipse插件开发一个月后,对插件的开发过程以及技术要求,也有了一定的了解.遥想之前像无头苍蝇一样乱撞乱学,真心觉得浪费了不少时间.这里就总结一下学习的主要过程以及需要的资料. Ecli ...

  5. Eclipse 插件开发 向导

    阅读目录 最近由于特殊需要,开始学习插件开发. 下面就直接弄一个简单的插件吧! 1 新建一个插件工程 2 创建自己的插件名字,这个名字最好特殊一点,一遍融合到eclipse的时候,不会发生冲突. 3 ...

  6. Swt/Jface中提供的dialog

    Swt/Jface中提供的dialog Swt/Jface中提供了各种各样的Dialog,一般情况下就能满足我们的需求,现在把这些dialog介绍一下, 下一篇文章再继续将如何自定义Dialog 一. ...

  7. eclipse下搭建SWT图形界面开发环境

    什么是SWT 参考:http://www.cppblog.com/baby-fly/archive/2009/10/20/99008.html 用java的人一定都知道AWT和Swing,而SWT(S ...

  8. SWT/JFace 同一个Label组件中显示不同的字体和字体颜色

    做Eclipse插件开发中,有时候需要高亮或者突出一个label中某个字,方式如下: package com.devin.eclipse.TextStyleDemo;import org.eclips ...

  9. swt/jface控件的隐藏与显示

    swt/jface控件的隐藏与显示部分源代码: import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; ...

最新文章

  1. BaseTDI.sys 瑞星卡巴冲突,导致机器蓝屏
  2. 遍历目录寻找指定文件
  3. C#基础练习(时间的三连击)
  4. 让delphi2010操作界面回到delphi7模式
  5. 【NOIP2012】旅行计划
  6. 51单片机外部地址c语言,cx51与c语言对单片机内部和外部资源变量和地址的定义是否兼容?为什么...
  7. 结婚生娃和去核电站参观,哪个更安全?
  8. linux下Oracle 10g的安装
  9. 转:vs2012远程调试功能的改进
  10. Asp.Net分页生成页码超链接方法
  11. Kettle_设置全局变量
  12. 马哥linux作业,马哥linux0803作业内容
  13. 宾馆客房管理系统的设计与实现
  14. 5类6类7类网线对比_超6类7类8类网线进来挨打 6类线全面测评 网速和传输速率测试...
  15. WORD安全模式怎么解除?
  16. 计算机无法识别建行网银盾,为你修复建行网银盾无法识别 【应对方案】 的详细方案_...
  17. Couldn't figure out the Java version of /root/.jenkins/jdk/bin/java bash: /root/.jenkins/jdk/bin/jav
  18. 服务器内存超频性能,服务器内存可以超频么
  19. 【经验总结】Centos8安装X264,X265,OPUS,AAC,FFmpeg一次性解决方案
  20. C#获取微信打卡数据

热门文章

  1. 什么是性能测试?为什么要进行性能测试?什么时候开展性能测试?性能测试流程是什么?性能测试有关术语是什么意思?
  2. Meta Graph Transformer: A Novel Framework for Spatial–Temporal Traffic Prediction
  3. 嵌入式Qt实验一(Qt开发环境的安装及服务端页面设计)
  4. 软件崩溃时 将堆栈信息写入dump文件, 并使用VS2010定位程序崩溃位置
  5. mysql upgrade 作用,【MySQL运维】使用mysql_upgrade升级MySQL
  6. 关于星际争霸2的发现
  7. Spring getBeansOfType方法 剖析及延展:获取指定类型的JavaBean
  8. 各种气候数据的下载(以下载青岛地区40年间月平均气温数据的下载为例)【转】...
  9. JUnit4.4 新特性 assertThat 使用详解
  10. 文档管理对人力资源部门的重要影响