当前位置:天才代写 > tutorial > JAVA 教程 > SWT/JFace开拓指南之相识Display和Shell

SWT/JFace开拓指南之相识Display和Shell

2017-11-10 08:00 星期五 所属: JAVA 教程 浏览:484

副标题#e#

在这一节中,我们从前面所罗列出来的Hello, world!措施开始对swt举办一些劈头的摸索。所谓的劈头是指,我们会先容编写swt措施的根基思路,以及对两个重要的类:Display和Shell作一些先容。

因为这一节和前一节是分成两个部门贴出来的,所以我仍然将Hello, world!的代码段在下面列出来:

1package swtjfacesample;
2
3import org.eclipse.swt.SWT;
4import org.eclipse.swt.widgets.Display;
5import org.eclipse.swt.widgets.Shell;
6import org.eclipse.swt.widgets.Text;
7
8public class HelloSwt {
9 /**//**
10 * Hello,world!
11 *
12 * @param args
13 */
14 public static void main(String[] args) {
15 Display display = new Display();
16 Shell shell = new Shell(display);
17
18 Text helloText = new Text(shell, SWT.CENTER);
19 helloText.setText("Hello,World!");
20 helloText.pack();
21
22 shell.pack();
23 shell.open();
24
25 while (!shell.isDisposed()) {
26 if (!display.readAndDispatch()) {
27 display.sleep();
28 }
29 }
30 display.dispose();
31
32 }
33}

代码段2

这段措施固然很简朴,可是它反应了我们书写swt措施的步调,这些步调是:

1.建设一个Display工具

2.建设一个可能多个Shell工具,你可以认为Shell代表了措施的窗口。

3.在Shell内建设各类部件(widget)

4.对各个部件举办初始化(外观,状态等),同时为各类部件的事件建设监听器(l5.挪用Shell工具的open()要领以显示窗体

6.各类事件举办监听并处理惩罚,直到措施发出退出动静

7.挪用Display工具的dispose()要领以竣事措施。


#p#副标题#e#

在Hello,world!措施中,为了让措施越发简朴,我们没有建设事件监听器,在今后的内容中会举办专门先容。

此刻让我们稍微深入一些,看一下这些Display,Shell有什么浸染以至于我们每个措施都必需有它们存在。

Display:与操纵系统相同的桥梁

我们在前面说过,每个swt措施在最开始都必需建设一个Display工具。Display工具起什么浸染呢?它是swt与操纵系统相同的一座桥梁。它认真swt和操纵系统之间的通信。它将swt/JFace的各类挪用转化为系统的底层挪用,节制操纵系统为swt分派的资源。同时我们也可以通过Display工具获得操纵系统的一些信息。

Display是一个“幕后事情者”,它为swt/JFace提供支持,可是你并不可以或许从某个用户界面中看到它的影子。

在前面的Hello,world!措施中,我们可以看到构建一个Display工具是和普通的Java工具一样通过结构函数实现的。它为实现图形界面筹备了最根基的条件。而在措施竣事时我们必需显式地挪用dispose() 要领来释放措施运行中所得到的资源。一般来说,一个措施只需要一个Display工具,虽然没有人克制你建设多个Display工具。可是在swt的javadoc中,我们可以看到关于这个问题一些描写:

“Applications which are built with SWT will almost always require only a single display.In particular, some platforms which SWT supports will not allow more than one active display.In other words, some platforms do not support creating a new display if one already exists that has not been sent the dispose() message.”

Display有着浩瀚的要领,我们不行能一一先容。在这里只挑选几个大概会较量常用的作一些简朴先容。

setData()和getData():这一对函数答允我们为Display工具设定一些数据,setData()的参数中key和value雷同于我们在利用Map工具中key和value的寄义。

getShells()获得关联到该Display工具的所有没有dispose的Shell工具

getCurrent()获得与用户交互的当前线程

readAndDispatch()获得事件而且挪用对应的监听器举办处理惩罚

sleep()期待事件产生

Shell:窗口

一个Shell工具就是一个窗口。你可以在上面安排各类部件建设富厚的图形界面。

我们都知道窗口有许多种,好比窗口有可以调解巨细的,有不行以的,有的没有最大化最小化按钮。这些窗体的特征在swt中被成为气势气魄(style)。一个窗体的气势气魄可以用一个整数举办界说。这些气势气魄的界说在org.eclipse.swt.SWT中。

Shell工具可用的气势气魄包罗:BORDER, CLOSE, MIN, MAX, NO_TRIM, RESIZE, TITLE , PLICATION_MODAL, MODELESS, PRIMARY_MODAL,S YSTEM_MODAL

这些气势气魄我们不作一一先容,你可以从他们字面意义看出一些寄义来,虽然也可以参考对应的javadoc。

我们可以在一个Shell的结构函数中界说它的气势气魄,好比在前面的Hello,world!措施中,我们可以这样界说Shell。

Shell shell = new Shell(display,SWT.CLOSE | SWT.SYSTEM_MODAL);

最后获得的窗体没有最大化和最小化按钮,而且巨细是牢靠稳定的。

#p#分页标题#e#

因为swt运行于各类平台之上,而这些平台上的窗口打点器千差万别,所以所有这些气势气魄都不是必定可以实现的。在swt的javadoc中,这被称为体现(hints)。

Shell工具的要领多半和GUI有关,好比setEnabled()设定了窗体是否可以或许和用户举办交互,setVisble()设定了窗体是否可见,setActive()将窗体设为当前的勾当窗口。

我们可以用open()要领打开一个窗体,close()要领封锁一个窗体。

小结

本节接头了Display和Shell的一些观念,这是我们今后进一步相识swt的基本。在下一节中,我将先容各类部件(widget)的用法,所谓部件,是指文本框,标签等UI实体。

 

    关键字:

天才代写-代写联系方式