SWT的API包

更新时间:2023-09-09 22:34:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

SWT的API包

现在来看看SWT所提供的API。SWT主要提供了

??org.eclipse.swt(主要提供SWT系列参数、错误、异常的信息,是SWT应用的基础。像上面

所用到的 SWT.NONE参数就是在这个下面) ??org.eclipse.swt.widgets(主要提供SWT的标准窗口部件,是我们开发UI主要用到的包。

其中包括Shell、Button、Label等等的窗口部件,我将在下面结合例子详细说) ??org.eclipse.swt.graphics(主要提供SWT中的画图功能,像常用Color、GC等都是属于这

个包) ??org.eclipse.swt.events(主要提供SWT中各种事件及监听类的定义)

??org.eclipse.swt.layout(通常与widgets包中的控件配合使用,主要提供对widgets包中

控件内部的摆放位置的定义,像上面例子中的FillLayout类就是充满式排列) ??org.eclipse.swt.dnd(忘了,呵呵一会再添) ??org.eclipse.swt.printing(忘了,一会再添)

??org.eclipse.swt.accessibility(忘了,呵呵一会再添) ??org.eclipse.swt.program(主要提供系统中其他程序的执行功能) ??org.eclipse.swt.ole.win32(忘了,呵呵一会再添)

??org.eclipse.swt.browser(我主要用这个提供了一个浏览器支持) ??org.eclipse.swt.awt(忘了,呵呵一会再添)。

那么我们就利用前面的那个例子来简单讲讲SWT API 中的控件。

首先我们看到的第一个控件是Display在org.eclipse.swt.widgets包内,是我们通常做的窗口的载体(窗口就是那个Shell)。而它继承与graphics包中的Device类,而Device类是继承Drawable(抽象)类,可见Display就是一个可以画图的一个设备类。通常它都是代表我们的显示屏幕。

Shell控件就是窗口对象类,通过Shell的open事件我们可以打开一个窗口,通过close事件去关闭它。Shell类是继承于Composite类,而Composite类继承了Scrollable类,所以可以在他上面摆放其他控件、设置排列方式、添加滚动条、添加最大最小关闭按钮。可见和我们常见的windows窗口是一样的。看到前面我们对Shell的定义方式,它通常都需要选择一个显示设备类作为父亲的,当然这个Shell类的构造函数是重载的,你可以什么参数都不加直接用Shell(),这个时候他默认你的当前设备的显示设备为Device并自动生成一个Display对象。你也可以象我们上面的例子那样使用指定一个显示设备。当然,最常用的是另一种方式——指定参数的方式。指定参数的方式的调用方法为Shell(Device,int)其中第一个参数不同说了就是我们的显示设备,而第二个参数是具体的类型。在这里,SWT为我们提供了很多的参数供选择。具体的参数都定义在org.eclipse.swt中。举个例子,你要是像要个带有垂直滚动条的窗口。那么你定义的时候就需要写 Shell shell = new

Shell(display, SWT.V_SCROLL);这样,你就有了一个带有垂直滚动条的窗口。当然具体的滚动事件还是需要你自己手动添加的。你一定会问:“如果我想要的窗口很特殊有多种特性怎么办?”很好。这个当然是SWT也考虑到了的。它提供了一种参数组合的方式就是用“|”来连接。Ex:当我们想要一个带有水平垂直滚动条,和标头上最小化按钮关闭按钮的窗口。那么我们可以这样写 Shell shell = new Shell(display,SWT.V_SCROLL|SWT.H_SCROLL|

SWT.CLOSE|SWT.MIN);怎么样,呵呵看到了吧。还有很多其他的参数你可以自己试试。记住这个设置参数的方法,因为SWT中其它控件创建时的参数设置方法也都是这样的。 Composite类相当于一个panel和Jpanel差不多,当然很多地方说Canvas才是和Jpanel对应的,这个我不反对,因为Canvas就是继承与Composite,当然Composite的属性它都具备了。

FillLayout类是Layout包中的一个类。前面说过了Layout包里面的类都主要负责排列位置的设定。而这个FillLayout类则是里面最简单的类型,顾名思义它就是充满式的排列。也就是如果你只有一个控件,它就把这个控件放大把整个区域充满。如果你有两个控件,那么它们两个同样把整个区域充满,并各自占区域的一半。还有其他比较复杂的排列方式我会在后边仔细讲解。

Label类这个大家都应该很熟悉,无论是C、Java、VB等等都会用到的。它只是一个负责显示文本或图片加文本的一个小区域。这里我们就不多说了,具体的相关例子和相关其他一些简单控件的时候使用我会在后面把Eclipse提供的一个例子集锦附上。

最后也是最重要的,就是释放。你会问:“为什么要释放?Java不是有自己的JVM去进行GC操作。”当然Java会对它自己的标准的Java类进行回收,但是别忘了我们SWT的机理。SWT是建立在C的基础上的,它使用的是JNI去调用标准的C包,所以当我们在结束程序的时候需要把这些都释放掉。这也算是SWT一个不尽和人意的地方吧,不过释放的方式很简单。只要调用其dispose()方法就可以了。而且一旦父对象被释放,其下的所有子对象也都被自动释放。也就是说你的Shell如果dispose了,那么其下的Button、Label、Composite也就都自动dispose了。

本文来源:https://www.bwwdw.com/article/ielh.html

Top