SWT当中的GridLayout是一个非常灵活的控件,但是在使用起来需要在控制上下一番功夫.

大家都知道,JAVA在写编写窗口程序的时候,物件的添加,放置 操作起来要比.net费劲的多,但是如果用好了相关org.eclipse.layout.*包当中的相关类,也会写出十分漂亮的界面程序.

下面大家先看一个程序:

源码如下:

package com.layout;

import org.eclipse.swt.widgets.*;

import org.eclipse.swt.layout.*;

import org.eclipse.swt.SWT;

public class CopyOfGridLayoutExc {

public static void main(String[] args) {

Display display = new Display();

Shell shell = new Shell(display);

shell.setText("Find (GridLayout)");

Label label = new Label(shell, SWT.NONE);

label.setText("Find what:");

Text text = new Text(shell, SWT.BORDER);

Button findButton = new Button(shell, SWT.PUSH);

findButton.setText("Find Next");

Group group = new Group(shell, SWT.NONE);

group.setLayout(new RowLayout());

Button upButton = new Button(group, SWT.RADIO);

upButton.setText("Up");

Button downButton = new Button(group, SWT.RADIO);

downButton.setText("Down");

downButton.setSelection(true);

group.setText("Direction");

Button cancelButton = new Button(shell, SWT.PUSH);

cancelButton.setText("Cancel");

/* Use a GridLayout to position the controls */

Monitor monitor = shell.getMonitor();

int width = monitor.getClientArea().width / 10;

GridLayout layout = new GridLayout(4, false);

layout.marginWidth = layout.marginHeight = 14;//layout leave's the window's space

shell.setLayout(layout);

GridData labelData =

new GridData(SWT.FILL, SWT.CENTER, false, false);

label.setLayoutData(labelData);

GridData textData =

new GridData(SWT.FILL,SWT.CENTER,true,false,2,1);

textData.widthHint = width;

text.setLayoutData(textData);

GridData findData =

new GridData(SWT.FILL, SWT.CENTER, false, false);

findButton.setLayoutData(findData);

GridData groupData =

new GridData(SWT.RIGHT,SWT.TOP,false,false,3,1);

group.setLayoutData(groupData);

GridData cancelData =

new GridData(SWT.FILL, SWT.TOP, false, false);

cancelButton.setLayoutData(cancelData);

shell.pack();

shell.open();

while (!shell.isDisposed()) {

if (!display.readAndDispatch()) display.sleep();

}

display.dispose();

}

}

这其中我们在使用的时候应该要注意以下几点:

1.要选择自己适合 的Layout类型.GridLayout适合于多种情况,它大部分情况是使用在较为复杂的界面编程当中,因为复杂的界面会有相当多的控件.

2.GridData的使用将是一个控制界面显示的主要类.通过使用GridData我们可以很好的控制界面.

其中GridData的构造函数比较多,但是相关的使用我们都应该熟悉,特别是上面源程序当中使用的那个构造函数,在使用起来更容易控制GridLayout的布局.通过horizantalSpan,VerticalSpan来控制控件所占用的单元格,这样就会控制其它控制是否在一列当中显示还是在几列当中显示.前提是通过GridLayout.numColumns来设置列数.

3.如果不设置GridData那么相关的控件都会按照相关的建立顺序加入到GridLayout当中.GridData不能控制控件的显示顺序,而相关顺序是对象的建立顺序来控制的.这一点不要与GridData混淆了.

希望写这篇文章对大家学习SWT有用.

posted on 2006-09-12 10:50 水煮三国 阅读(2373) 评论(1)  编辑  收藏 所属分类: J2SE

gridlayout用法 java_SWT:GridLayout 的使用需要注意的事项相关推荐

  1. gridlayout用法 java_BorderLayout、FlowLayout和GridLayout使用方法

    BorderLayout BorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将容器划分为五个区域,分别是页头(PAGE_START).页尾(PAGE_END).行首(LINE_ST ...

  2. gridlayout用法 java_Java从入门到精通14-GridLayout网格布局

    网格布局特点: 使容器中的各组件呈M行×N列的网格状分布. 网格每列宽度相同,等于容器的宽度除以网格的列数. 网格每行高度相同,等于容器的高度除以网格的行数. 各组件的排列方式为:从上到下,从左到右. ...

  3. gridlayout用法 java_java – 使用gridlayout添加按钮

    我正在尝试制作一个由9×9 JButton制作的简单的tic tac toe board. 我使用了二维数组和一个gridlayout,但结果是什么,没有任何按钮的框架. 我做错了什么? import ...

  4. Android 应用开发(50)---GridLayout(网格布局)

    GridLayout(网格布局) 今天要介绍的布局是Android 4.0以后引入的一个新的布局,和前面所学的TableLayout(表格布局) 有点类似,不过他有很多前者没有的东西,也更加好用, 可 ...

  5. Android 应用开发(39)---GridLayout(网格布局)

    GridLayout(网格布局) 可以自己设置布局中组件的排列方式 可以自定义网格布局有多少行,多少列 可以直接设置组件位于某行某列 可以设置组件横跨几行或者几列 另外,除了上述内容外,本节还会给大家 ...

  6. GridLayout(网格布局)

    前言: 作为android 4.0 后新增的一个布局,与前面介绍过的TableLayout(表格布局)其实有点大同小异; 不过新增了一些东东 ①跟LinearLayout(线性布局)一样,他可以设置容 ...

  7. android布局layout,Android布局(FrameLayout、GridLayout)

    1.帧布局(FrameLayout) 帧布局中的每一个组件都代表一个画面,默认以屏幕左上角作为(0,0)坐标,按组件定义的先后顺序依次逐屏显示,后面出现的会覆盖前面的画面.用该布局可以实现动画效果.继 ...

  8. Android——GridLayout

    转载自http://www.cnblogs.com/over140/archive/2011/12/08/2280224.html 欢迎大家转载 前言 本章内容android.widget.GridL ...

  9. 安卓布局,GridLayout

    布局代码: <?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android= ...

最新文章

  1. Ubuntu下安装kate编辑器
  2. 网络通信-1(InetAddress、UDP、TCP、DatagramPacket、DatagramSocket、UDP通信示例)
  3. 接受map_[译] 图解 Map、Reduce 和 Filter 数组方法
  4. 基于C#.NET的高端智能化网络爬虫
  5. Effective C++学习第九天
  6. 前端复习之JavaScript基础
  7. 华为Mate 30 Pro全新配色曝光:“赤茶橘”颜值超高
  8. 【kafka】kafka kerberos Cannot locate KDC Unable to locate KDC for realm
  9. python 类函数 实例函数_python_30期【实例函数 类里面的函数】
  10. 电脑小白和黑客的对白
  11. 申请亚马逊AWS一年免费服务器
  12. 你不知道的网站图片存储格式-base64
  13. linux 囊括所有安装
  14. 微信扫码下载app的前端界面代码
  15. CAD Voronoi 生成插件 V2
  16. Anaconda安装指南
  17. 最大后验概率(MAP)- maximum a posteriori
  18. Unity 3d 最新下载与安装
  19. 英雄互娱A股上市路:被收购、独立IPO、借壳均被按下暂停键
  20. Redo Byte Address(RBA)

热门文章

  1. catlogin.java_[安全|管理]CatSeedLogin —— 种子猫登录插件[1.12.2-1.16]
  2. 《我要自学网》——DW CS5 摘要
  3. c语言差分qpsk编码信道估计 pudn,请教一下OFDM中的信道估计
  4. phpexcel手册
  5. phpexcel 设置批注_phpexcel中文教程-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护...
  6. Javascript: unterminated string literal 解决方法
  7. 网络编程【2】自定义消息格式实现装包与拆包
  8. MOOC 北京大学 《人工智能实践》 课程笔记(文末有全部代码)
  9. 计算机显示器画画的清晰度,分辨率越高显示画质越好吗?_液晶显示器_液晶显示器新闻-中关村在线...
  10. oracle streams 11g数据复制,在Oracle 11g Streams单向传输的基础上配置Streams双向传输测试...