Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7249147
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68080
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:48:45

下载本文示例代码
  在这一节中,我们从前面所列举出来的Hello, world!程序开始对swt进行一些初步的探索。所谓的初步是指,我们会介绍编写swt程序的基本思路,以及对两个重要的类:Display和Shell作一些介绍。   因为这一节和前一节是分成两个部分贴出来的,所以我仍然将Hello, world!的代码段在下面列出来: 1package swtjfacesample;23import org.eclipse.swt.SWT;4import org.eclipse.swt.widgets.Display;5import org.eclipse.swt.widgets.Shell;6import org.eclipse.swt.widgets.Text;78public class HelloSwt {9 /**//**10 * Hello,world!11 * 12 * @param args13 */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();2425 while (!shell.isDisposed()) {26 if (!display.readAndDispatch()) {27 display.sleep();28 }29 }30 display.dispose();3132 }33}  代码段2  这段程序虽然很简单,但是它反映了我们书写swt程序的步骤,这些步骤是:  1. 创建一个Display对象  2. 创建一个或者多个Shell对象,你可以认为Shell代表了程序的窗口。  3. 在Shell内创建各种部件(widget)  4. 对各个部件进行初始化(外观,状态等),同时为各种部件的事件创建监听器(l5. 调用Shell对象的open()方法以显示窗体  6. 各种事件进行监听并处理,直到程序发出退出消息  7. 调用Display对象的dispose()方法以结束程序。  在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);  最后得到的窗体没有最大化和最小化按钮,并且大小是固定不变的。  因为swt运行于各种平台之上,而这些平台上的窗口管理器千差万别,所以所有这些风格都不是肯定可以实现的。在swt的javadoc中,这被称为暗示(hints)。  Shell对象的方法大都和GUI有关,比如setEnabled()设定了窗体是否能够和用户进行交互,setVisble()设定了窗体是否可见,setActive()将窗体设为当前的活动窗口。  我们可以用open()方法打开一个窗体,close()方法关闭一个窗体。  小结  本节讨论了Display和Shell的一些概念,这是我们以后进一步了解swt的基础。在下一节中,我将介绍各种部件(widget)的用法,所谓部件,是指文本框,标签等UI实体。   在这一节中,我们从前面所列举出来的Hello, world!程序开始对swt进行一些初步的探索。所谓的初步是指,我们会介绍编写swt程序的基本思路,以及对两个重要的类:Display和Shell作一些介绍。   因为这一节和前一节是分成两个部分贴出来的,所以我仍然将Hello, world!的代码段在下面列出来: 1package swtjfacesample;23import org.eclipse.swt.SWT;4import org.eclipse.swt.widgets.Display;5import org.eclipse.swt.widgets.Shell;6import org.eclipse.swt.widgets.Text;78public class HelloSwt {9 /**//**10 * Hello,world!11 * 12 * @param args13 */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();2425 while (!shell.isDisposed()) {26 if (!display.readAndDispatch()) {27 display.sleep();28 }29 }30 display.dispose();3132 }33}  代码段2  这段程序虽然很简单,但是它反映了我们书写swt程序的步骤,这些步骤是:  1. 创建一个Display对象  2. 创建一个或者多个Shell对象,你可以认为Shell代表了程序的窗口。  3. 在Shell内创建各种部件(widget)  4. 对各个部件进行初始化(外观,状态等),同时为各种部件的事件创建监听器(l5. 调用Shell对象的open()方法以显示窗体  6. 各种事件进行监听并处理,直到程序发出退出消息  7. 调用Display对象的dispose()方法以结束程序。  在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);  最后得到的窗体没有最大化和最小化按钮,并且大小是固定不变的。  因为swt运行于各种平台之上,而这些平台上的窗口管理器千差万别,所以所有这些风格都不是肯定可以实现的。在swt的javadoc中,这被称为暗示(hints)。  Shell对象的方法大都和GUI有关,比如setEnabled()设定了窗体是否能够和用户进行交互,setVisble()设定了窗体是否可见,setActive()将窗体设为当前的活动窗口。  我们可以用open()方法打开一个窗体,close()方法关闭一个窗体。  小结  本节讨论了Display和Shell的一些概念,这是我们以后进一步了解swt的基础。在下一节中,我将介绍各种部件(widget)的用法,所谓部件,是指文本框,标签等UI实体。 下载本文示例代码


SWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和ShellSWT/JFace开发指南之了解Display和Shell
阅读(785) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~