GridLayout and GridData
GridLayout的风格
GridLayout类提供了GridLayout 布局中划分网格的信息,主要通过以下几个参数进行设置。
属性:
NumColumns:通过“gridLayout.numColumns”属性可以设置父组件中分几列显示子组件。
MakeColumnsEqualWidth:通过“gridLayout. makeColumnsEqualWidth”属性可以设置父组件中子组件是否有相同的列宽,当MakeColumnsEqualWidth为true时表示每列的列宽相等。
MarginLeft:表示当前组件距离父组件左边距的像素点个数。
MarginRight:表示当前组件距离父组件右边距的像素点个数。
MarginTop:表示当前组件距离父组件上边距的像素点个数。
MarginBottom:表示当前组件距离父组件下边距的像素点个数。
HorizontalSpacing:表示子组件的水平间距。
VerticalSpacing:表示子组件的垂直间距。
GridData的相关属性
GridLayout布局的灵活之处在于它利用网格布局数据GridData。通过GridData可以设置子组件在网格中的填充方式、大小边距等信息,用户可以通过子组件的setLayoutData方法设置网格布局数据。
GridData可以控制子组件在网格中的位置大小等相关显示信息。GridData可以设置如下的一些属性。
属性:
HorizontalAlignment:表示水平对齐方式。
VerticalAlignment:表示子组件的垂直对齐方式,值和水平方式一样。
HorizontalIndent:表示子组件水平偏移多少像素。此属性和“horizontalAlignment = GridData.BEGINNING”属性一起使用。
HorizontalSpan:表示组件水平占据几个网格。
GrabExcessHorizontalSpace:表示当父组件大小改变时,子组件是否以水平方向抢占空间。
GrabExcessVerticalSpace:表示当父组件大小改变时,子组件是否以垂直方向抢占空间。
WidthHint:表示子组件的宽度为多少像素(前提是未设置其他相关属性)。
HeightHint:表示子组件的高度为多少像素(前提是未设置其他相关属性)。
另外,GridData可以通过构造函数指定相应的属性值,有兴趣的读者可以参考GridData类的构造函数。
import org.eclipse.swt.SWT;
public class GridLayoutDemo {
public static void main(String[] args) {
Display display = new Display(new DeviceData());
System.out.println(display.getBounds().width);
Shell shell = new Shell(display);
shell.setSize(500, 400);
GridLayout gridLayout = new GridLayout(); // 定义一个GridLayout对象
gridLayout.numColumns = 6; // 设定GridLayout对象的列数
shell.setLayout(gridLayout); // 设定shell的排列方式
GridData gridData; // 声明一个GridData对象
Text text1 = new Text(shell, SWT.NONE);
text1.setText("1");
gridData = new GridData(GridData.VERTICAL_ALIGN_FILL);
/**
* 定义一个
*
* /*gridData的类型,其中VERTICAL_ALIGN_FILL代表垂直方向按单
*
* /*元格拉伸对齐。下面的HORIZONTAL_ALIGN_FILL代表在水平方向上
*
* /*按单元格拉伸对其,而FILL_BOTH代表双向拉伸充满。当然还有水/*平方向上的FILL_HORIZONTAL等。
**/
gridData.verticalSpan = 2;// 设置垂直方向所占用的单元格数
text1.setLayoutData(gridData); // 设置Text对象的GridData
Text text2 = new Text(shell, SWT.NONE);
text2.setText("2");
gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
gridData.horizontalSpan = 5;
text2.setLayoutData(gridData);
Text text3 = new Text(shell, SWT.NONE);
text3.setText("3");
gridData = new GridData(GridData.FILL_BOTH);
gridData.horizontalSpan = 4; // 设置水平方向上所占用的单元格数
text3.setLayoutData(gridData);
Text text4 = new Text(shell, SWT.NONE);
text4.setText("4");
gridData = new GridData(GridData.VERTICAL_ALIGN_FILL);
gridData.verticalSpan = 2;
text4.setLayoutData(gridData);
Text text5 = new Text(shell, SWT.NONE);
text5.setText("5");
gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
gridData.horizontalSpan = 5;
text5.setLayoutData(gridData);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
注意:如果将gridLayout这个布局设置给Composite组件的时候,需要调用composite的layout方法,否则布局无法显示。
GridLayout and GridData的更多相关文章
- SWT中的GridLayout(转)例子不错
GridLayout 是一个非常强大的布局管理器,它可以实现很多复杂的布局,名字中暗示它将所有控件放置在类似网格的布局中.^__^GridLayout 有两个构造函数. GridLayout的构造函数 ...
- 关于SWT中的GridLayout布局方式
GridLayout 布局的功能非常强大,也是笔者常用的一种布局方式.GridLayout是网格式布局,它把父组件分成一个表格,默认情况下每个子组件占据一个单元格的空间,每个子组件按添加到父组件的顺序 ...
- SWT的GridData一些参数的图示
1. 参数:verticalSpan GridData gridData=new GridData(); gridData.verticalSpan=100; final Text nameText= ...
- GridLayout 使用
上次做了一个小键盘,请见:PopupWindow 使用. 效果是这样的: 可以看到,上面的按键是不一样大小的.因为是用LinearLayout布局,用的Button样式也是默认的.数字键和文字键的大小 ...
- GridLayout自定义数字键盘(两个EditText)
功能说明: 适用于两个EditText输入框,并控制输入字符的长度,点击键盘中的"确定"按钮完成输入,点击"前一项"光标跳到前一个EditText 运行效果图如 ...
- 浅谈GridLayout(网格布局)
Android 4.0 布局-->GridLayout 网格布局 以行列单元格的形式展示内部控件排列,可以实现类似计算机键盘效果 ,也可以实现可自动变行的标签群效果 使用GridLayout , ...
- Android中帧布局-FrameLayout和网格布局-GridLayout
帧布局-FrameLayout 一.概念 帧布局中,容器为每个加入其中的空间创建一个空白的区域(成为一帧).每个空间占据一帧,这些帧会按gravity属性自动对齐. 帧布局的效果是将其中的所有空间叠加 ...
- 4.0以后的新布局方式GridLayout
<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android=" ...
- Android 布局之GridLayout
Android 布局之GridLayout 1 GridLayout简介 GridLayout是Android4.0新提供的网格矩阵形式的布局控件. GridLayout的继承关系如下:java.la ...
随机推荐
- Java学习笔记——设计模式之八.外观模式
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 子系统: package cn.happy.design_patter ...
- 基于List数组转换成tree对象
package com.shjysoft.yunxi.sync.webservice; import java.util.ArrayList;import java.util.Date;import ...
- Singleton and Prototype Bean Scope in Spring
Scope描述的是Spring容器如何新建Bean的实例的. 1> Singleton: 一个Spring容器只有一个Bean的实例,此为Spring的默认配置,全容器共享一个实例. 2> ...
- Linux运维工程师学习成长路线
不过大家的留言都很精彩,希望大家也可以去留言区逛一逛~~ 好在这不是最后一期送书,之前已经有了好多活动,小编一定继续为大家多送些福利. 希望大家可以一如既往的关注脚本之家,支持爱你们的小编,共同进步! ...
- java集合框架中的去重问题
对于自定义的类来说,必须要重写hashcode和equals方法 hashcode方法的作用是确定元素在数据结构中的位置,当两个元素的hash值一样时,需要用equals方法判断两个元素是否是一样的, ...
- java虚拟机-GC-新生代的GC、老年代的GC
名词解释: GC:垃圾收集器 Minor GC:新生代GC,指发生在新生代的垃圾收集动作,所有的Minor GC都会触发全世界的暂停(stop-the-world),停止应用程序的线程,不过这个过程非 ...
- css实现超出文本溢出用省略号代替
一.单行 实现单行文本的溢出显示省略号使用text-overflow:ellipsis属性,但需要配合使用另外两个属性使用才能达到效果. 如下: overflow:hidden; text-overf ...
- Codeforces Gym101518F:Dimensional Warp Drive(二分+高斯消元)
题目链接 题意 给出一个11元组A和11元组B,给出n个11元方程,每个方程有一个日期,要让A变成B,问最少需要日期多少才可以变. 思路 因为日期满足单调性,所以可以二分答案.判断的时候就是高斯消元套 ...
- Vue技术点整理-前言
前言 Vue版本说明:本文档编写时,Vue稳定版本为 2.6.10 本文档编写目的为:整理Vue相关生态的技术点.和开发中经常使用到的技术点,让开发者快速上手开发,提升开发效率 一,Vue开发工具:本 ...
- 使用GDAL实现DEM的地貌晕渲图(一)
目录 1. 原理 1) 点法向量 2) 日照方向 (1) 太阳高度角和太阳方位角 (2) 计算过程 3) 晕渲强度 2. 实现 3. 参考 @ 1. 原理 以前一直以为对DEM的渲染就是简单的根据DE ...