快速业务通道

SWT/JFace入门指南之初步体验widget - 编程入门网

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

SWT/JFace入门指南之初步体验widget

时间:2011-01-04

从Widget和Control开始

Widget是Control的父类,而Control是我们使用的大多数部件的父类。我们在以前的一些编程语言中可能接触过“控件”或者“组件”之类的概念,部件(widget)的概念大体和这些相当。

在org.eclipse.swt.widgets中定义了众多的widget,甚至我们前面介绍的Shell也被当成widget的一种。

因为可用的widget如此之多,所以我大概没有办法全部一一介绍。在这一节中,我会介绍几种常用的widget。相信善于触类旁通的你通过这些极为简略的介绍应该可以开始使用各种widget,在使用中不断完善自己的认识。

首先我们来介绍Widget。它是一个抽象类,也是所有widget的父类。通过介绍这个类,我们可以得出这所有widget的一些共有特性。

Widget的方法中dispose()方法我们在以前曾经见到过,调用这个方法时候,所谓的接收者(receiver,譬如我们这样写:awidget.dispose(),那么awidget就是接收者,而这句话所处的对象成为调用者或者caller)和接收者中所包含的其他widget会释放它们所占用底层操作系统的资源。这也就是说你不必显式地为程序中创建的每个widget进行dispose()调用,而只需要确保最外层的widget(比如Display)进行了dispose()就可以了。

另外还可以通过isDisposed()判断是否该widget(接收者)已经进行了dispose。

Widget中的getStyle()方法得到widget的风格,而getDisplay()得到所处的Display对象。

此外Widget中还有两个重要方法getData()和setData(),这两个方法允许我们为一个widget附加其他的信息。特别是在你需要跨模块传递widget的时候,这个功能显得非常有用。比如如果一个文本框中显示了一段文章中的某句话,如果我们同时希望把这整篇文章的题目和作者附加上的话可以这样写:

1public class Labels ...{ 2 3 public static void main(String[] args) ...{ 4 Display display = new Display(); 5 Shell shell = new Shell(display,SWT.SHELL_TRIM); 6 RowLayout layout=new RowLayout(SWT.VERTICAL); 7 shell.setLayout(layout); 8 shell.setText("Labels"); 9 Label label1=new Label(shell,SWT.CENTER); 10 label1.setText("Label Demo"); 11 Label label2=new Label(shell,SWT.SEPARATOR | SWT.HORIZONTAL); 12 shell.setSize(100,100); 13 shell.open(); 14 15 while (!shell.isDisposed()) ...{ 16 if (!display.readAndDispatch()) ... { 17 display.sleep(); 18 } 19 } 20 display.dispose(); 21 } 22} 23

SWT/JFace入门指南之初步体验widget(2)

时间:2011-01-04

代码段 3

在程序的其他部分可以用atext.getData(“title”)得到这篇文章的题目,或者用atext.getData("author")得到作者。

在前面我们提到过,Control是今后我们所使用大部分widget的父类。在这里我不单独进行介绍,而是在后面的部分中介绍。

创建部件

和创建其他java object一样,我们通过使用new操作符创建部件的实例。有一点比较特殊的可能你需要使用带参数的构造函数进行new操作。类似下面的程序:

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

这种方法适用于几乎所有的widget,其中第一个参数是父widget,也就是指明了该widget需要被放置道另外哪一个widget之中,而第二个参数是这个widget的风格。

大小和位置

仅仅创建一个部件并不足以让你看到它,因为一个部件初始的长和宽都是0。你还需要设定它的大小。你可以用setSize()或者setBounds()方法手动设定部件的大小,也可以让系统自动调整部件的大小到一个合适的值,这个值也被成为首选尺寸(preferred size)。

可以通过调用pack()方法让系统

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号