快速业务通道

组织SWT/JFace控件的利器:Layout - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

组织SWT/JFace控件的利器:Layout

时间:2010-04-15 天极

在可视化编程时代,大多数可视化的GUI开发工具都提供了按一定规则排列Form中的控件的功能。但是对于Java来说,支持可视化开发的工具并不多,虽然有一些这样的工具,但它们大多是第三方的产品,稳定性方面有一些欠缺。因此,在很多时候使用Java编写GUI程序时,就要使用布局(Layout)来控制Form上的控件的位置。

本文主要讨论如何使用SWT中提供的布局来安排控件的位置,并通过实例来演示这一过程。在SWT中提供了5种布局:FillLayout, RowLayout, GridLayout, FormLayout, and StackLayout。下面我将详细讨论这5种布局的使用。

FillLayout

FillLayout是最简单的布局。它可以将控件横向或纵向进行排列,并且其中每个控件都有同样的宽度或高度。使用FillLayout一般分为2步。

1. 建立一个FillLayout对象。

2. 使用setLayout方法设置Shell对象的布局。

下面代码使用FillLayout在Shell上放了3个按钮,代码如下:

package layout; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.*; import org.eclipse.swt.layout.*; public class TestFillLayout {  public static void main(String[] args)  {   Display display = new Display();   Shell shell = new Shell(display, SWT.DIALOG_TRIM);   shell.setText("FillLayout演示");   shell.setSize(400, 300);   // 设置shell的布局   FillLayout layout = new FillLayout();   shell.setLayout(layout);   // 向shell添加控件   Button button1 = new Button(shell, SWT.PUSH);   button1.setText("按钮1");   Button button2 = new Button(shell, SWT.PUSH);   button2.setText("按钮2");   Button button3 = new Button(shell, SWT.PUSH);   button3.setText("按钮3");   shell.open();   while (!shell.isDisposed())   {    if (!display.readAndDispatch())    {     display.sleep();    }   }   display.dispose();  } }

界面如图1所示。

组织SWT/JFace控件的利器:Layout - 编程入门网

图 1 使用横向FillLayout的Shell界面

如果想要Shell上的控件纵向排列,可以在建立布局时将type属性设置成SWT.VERTICAL。代码如下:

FillLayout layout = new FillLayout(); layout.type = SWT.VERTICAL; shell.setLayout(layout);

图2是控件纵向排列的效果图

组织SWT/JFace控件的利器:Layout - 编程入门网

图 2 使用纵向FillLayout的Shell界面

FillLayout的构造函数重载了2次。其中一个构造函数有一个参数,这个参数就是type。因此,我们也可以通过FillLayout的构造函数对type赋值。

shell.setLayout(new FillLayout(SWT.VERTICAL));

组织SWT/JFace控件的利器:Layout(2)

时间:2010-04-15 天极

RowLayout

RowLayout的功能和FillLayout差不多。只是它和FillLayout的最大区别是每个控件并不一定是一样大小。而且RowLayout是按行排列,这一点和FillLayout是不同的。在一行排满后,就从下一行开始排列。和RowLayout配合使用的还有一个RowData类。这个类可以设置每一个控件的大小。下面代码是一个使用RowLayout的小例子。

package layout; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.*; import org.eclipse.swt.layout.*; public class TestRowLayout {  public static void main(String[] args)  {   Display display = new Display();   Shell shell = new Shell(display, SWT.DIALOG_TRIM);   shell.setText("RowLayout演示");   shell.setSize(220, 200);   // 将Shell的布局设置成RowLayout   RowLayout layout = new RowLayout(SWT.HORI

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号