从Hello, world!开始了解Display和Shell
在这一节中,我们从前面所列举出来的Hello, world!程序开始对swt进行一些初步的探索。所谓的初步是指,我们会介绍编写swt程序的基本思路,以及对两个重要的类:Display和Shell作一些介绍。
因为这一节和前一节是分成两个部分贴出来的,所以我仍然将Hello, world!的代码段在下面列出来:
2
这段程序虽然很简单,但是它反映了我们书写swt程序的步骤,这些步骤是:
1. 创建一个Display对象
2. 创建一个或者多个Shell对象,你可以认为Shell代表了程序的窗口。
3. 在Shell内创建各种部件(widget)
4. 对各个部件进行初始化(外观,状态等),同时为各种部件的事件创建监听器(listener)
5. 调用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有着众多的方法,我们不可能一一介绍。在这里只挑选几个可能会比较常用的作一些简单介绍。
l setData()和getData():这一对函数允许我们为Display对象设定一些数据,setData()的参数中key和value类似于我们在使用Map对象中key和value的含义。
l getShells()得到关联到该Display对象的所有没有dispose的Shell对象
l getCurrent()得到与用户交互的当前线程
l readAndDispatch()得到事件并且调用对应的监听器进行处理
l 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。
最后得到的窗体没有最大化和最小化按钮,并且大小是固定不变的。
因为swt运行于各种平台之上,而这些平台上的窗口管理器千差万别,所以所有这些风格都不是肯定可以实现的。在swt的javadoc中,这被称为暗示(hints)。
Shell对象的方法大都和GUI有关,比如setEnabled()设定了窗体是否能够和用户进行交互,setVisble()设定了窗体是否可见,setActive()将窗体设为当前的活动窗口。
我们可以用open()方法打开一个窗体,close()方法关闭一个窗体。
小结
本节讨论了Display和Shell的一些概念,这是我们以后进一步了解swt的基础。在下一节中,我将介绍各种部件(widget)的用法,所谓部件,是指文本框,标签等UI实体。
分享到:
相关推荐
SWT/Jface开发入门指南是一篇专为初学者编写的教程,旨在帮助他们快速搭建开发环境并掌握使用SWT和JFace编写图形化应用程序的基本技巧。以下是该教程所涵盖的关键知识点: 1. **SWT和JFace简介**: - SWT全称...
### SWT/JFace开发入门指南知识点解析 #### 一、SWT/JFace简介及目标受众 - **SWT**(Standard Widget Toolkit)与 **JFace** 是 Eclipse 平台中的两个重要组成部分,主要用于创建桌面应用程序的用户界面。 - 本...
王占全,苏玲 著; ISBN:7-121-05152-4 学习 SWT/JFace 的好书!
该书是针对使用Eclipse 3.0版本中的SWT(Standard Widget Toolkit)和JFace(Java Face)进行GUI设计的专业指南。 #### 1. 概述SWT和JFace - **SWT**: SWT是一个开源图形工具包,用于开发跨平台的Java桌面应用程序...
使用RCP,我们可以开发界面象Eclipse这样漂亮的桌面程序,比如医院管理系统啊、CAD软件等等。遗憾的是,目前在国内基本上找不到关于RCP的中文资料,我们只能通过自己的探索来为我们的程序添加我们想要的功能
《SWT_JFace_in_Action》是一本专注于Java编程领域中SWT(Standard Widget Toolkit)和JFace技术的实践指南。这本书深入浅出地讲解了如何使用这两项强大的工具来构建功能丰富的图形用户界面(GUI)。SWT是Eclipse...
《SWT和JFace开发指南》是一本深入探讨Eclipse RCP(Rich Client Platform)开发技术的专业书籍。这本书主要关注两个关键组件:SWT(Standard Widget Toolkit)和JFace,它们是Eclipse平台中用于构建桌面应用程序的...
- **入门指南**(第2章)提供了快速上手的指南,帮助读者快速熟悉SWT和JFace的开发环境设置。 - **组件详解**(第3章到第5章)分别介绍了SWT中的各种基本组件(如按钮、文本框等)以及更高级的组件(如树形控件、...
### Eclipse下SWT图形界面开发指南(2):深入探讨JFace图像注册表与状态栏的应用 #### 安装说明 在本篇文章中,我们继续深入探讨如何在Eclipse平台上利用SWT(Standard Widget Toolkit)进行图形用户界面的开发。...
### 三、Eclipse插件开发入门 对于初学者来说,掌握 Eclipse 插件开发的基本概念和步骤是非常重要的。下面是一些关键知识点: 1. **了解 Eclipse 架构**:熟悉 Eclipse 的整体架构有助于理解插件是如何与核心组件...
《SWT开发者手记》是一本专为Java开发者设计的指南,旨在帮助读者从入门到精通SWT(Standard Widget Toolkit)技术。SWT是Eclipse基金会开发的一个开源GUI(图形用户界面)库,它提供了与操作系统原生界面的紧密集成...
"swt.rar"和"51CTO下载-eclipse入门到精通(第一版)源代码—第二篇 SWT_JFace篇(6-16章).rar"可能分别提供了更多的SWT实例代码和Eclipse集成开发环境下的SWT-JFace教程。JFace是建立在SWT之上的一层抽象,简化了GUI...
这本学习笔记涵盖了从第6章到第11章的关键内容,旨在为初学者提供一个扎实的入门指南。 第6章 "界面开发工具"介绍了Eclipse中的SWT和JFace库,它们是构建用户界面的基础。SWT(Standard Widget Toolkit)是Eclipse...
《SwtJfaceInAction》这本书是关于如何使用Eclipse 3.0设计图形应用程序的专业指南...通过本书,读者可以掌握基于Eclipse 3.0的SWT和JFace开发技术,从而能够高效地构建出高效、美观且功能丰富的图形用户界面应用程序。
3. **SWT/JFace开发基础**:虽然这不是必需的,但对于定制用户界面非常有帮助。 #### 三、Eclipse组件及其作用 为了更好地理解如何使用RCP构建应用程序,我们需要对Eclipse的核心组件有一个大致的认识。这些组件...
《Eclipse从入门到精通》是一本针对Eclipse集成开发环境深入浅出的教程,旨在帮助初学者快速掌握这一强大的开发工具。Eclipse是开源的,具有丰富的扩展性,不仅适用于Java开发,还支持多种语言和平台。其体系结构...