`

swt中的display对象和shell对象

    博客分类:
  • swt
阅读更多
转自:
http://blog.csdn.net/chulaixi/article/details/3095478

我们书写swt程序的步骤,这些步骤是:

1.      创建一个Display对象

2.      创建一个或者多个Shell对象,你可以认为Shell代表了程序的窗口。

3.      在Shell内创建各种部件(widget)

4.      对各个部件进行初始化(外观,状态等),同时为各种部件的事件创建监听器(listener)

5.      调用Shell对象的open()方法以显示窗体

6.      各种事件进行监听并处理,直到程序发出退出消息

7.      调用Display对象的dispose()方法以结束程序。

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。


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小技巧,SWT的SHELL样式

    在SWT中,`Shell`对象是最基本的窗口容器,所有其他控件都必须放置在一个`Shell`对象内。`Shell`对象支持多种样式设置,通过这些样式可以定制窗口的行为和外观。 #### 二、SWT.SHELL样式详解 SWT中的`Shell`样式...

    SWT创建Shell窗口

    在实际开发中,我们还可以使用布局管理器(如FillLayout、GridLayout等)来控制控件在Shell中的排列方式,或者使用Event和Listener机制来响应用户的操作。此外,SWT还提供了丰富的组件,如树、表格、菜单等,满足...

    swt的简单代码

    这段代码首先创建了一个Display对象,然后创建一个Shell窗口,并设置其文本为"SWT Example"。使用FillLayout确保窗口内的组件会填充整个窗口。最后,程序进入主循环,处理事件直到窗口被关闭。 总的来说,SWT提供了...

    java SWT教程

    JFace和SWT的关系类似于MVC模式中的模型-视图控制器,JFace起到了控制器的作用,简化了视图的创建和管理,而SWT则作为基础的视图组件库。 【SWT程序开发步骤】 1. 获取SWT库:SWT库通常随Eclipse IDE一起提供,例如...

    在SWING、SWT中嵌入浏览器

    在Java编程环境中,SWING和SWT(Standard Widget Toolkit)是两种常见的图形用户界面(GUI)库,用于创建桌面应用程序。然而,有时我们可能需要在这些应用中集成Web浏览功能,比如显示网页或者运行Web应用。这篇博客...

    swt工具文档 swt工具文档

    1. **初始化Display和Shell**: 应用程序开始时,首先创建Display对象,然后创建一个或多个Shell对象。 2. **添加Widgets**: 在Shell中添加所需的Widgets,如Button、Text等,并设置其属性。 3. **设置布局**: 选择...

    如何在SWT中使用AWT、SWING组件

    在Java编程环境中,SWT(Standard Widget Toolkit)和AWT(Abstract Window Toolkit)以及SWING是三种常用的图形用户界面(GUI)开发库。SWT主要为Eclipse IDE提供支持,而AWT和SWING则是Java标准库的一部分。这篇...

    swt-jface入门

    创建一个基本的SWT程序通常涉及导入必要的SWT库,然后创建Display和Shell对象。Display是SWT中用于管理窗口系统的对象,而Shell则代表应用程序的主要窗口。以下是一个简单的SWT "Hello world"程序示例: ```java ...

    swt线程冲突与解决

    通过对SWT线程冲突的理解以及对同步调用和异步调用的掌握,我们可以有效地避免在多线程环境中对SWT组件的非法访问,从而提高程序的稳定性和用户体验。在实际开发过程中,根据具体的业务需求选择合适的调用方式是非常...

    SWT中文教程.rar

    SWT(Standard Widget Toolkit)是Java编程环境中一个用于创建图形用户界面(GUI)的开源库,它是Eclipse项目的一部分。本教程将深入讲解SWT的基本概念、组件使用以及实际开发中的应用技巧。以下是对SWT中文教程的...

    在Eclipse中用SWT设计界面

    在Eclipse中,使用SWT设计界面涉及创建Display对象、Shell对象以及各种Widgets。例如,创建一个简单的按钮可能如下所示: ```java import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import ...

    swt资源释放问题

    在 SWT 中,Display 实例是所有 Shell 的最高父资源。创建 Display 实例的线程被称为 UI 线程。Display 实例的创建可以使用 getDefault() 方法,第一次调用将创建一个新的 Display 实例,后续调用将获取已经创建的 ...

    eclipse开发SWT应用

    然后可以使用`Display`对象来创建各种控件,例如`Button`、`Text`等,并通过`shell.pack()`和`shell.open()`方法设置控件布局并显示窗口。 4. **事件处理**:SWT控件可以通过添加监听器来响应用户操作,例如按钮的...

    swt教程 有关SWT怎么应用

    3. **配置构建路径**:在Eclipse项目中,需要将SWT库的JAR文件添加到构建路径中,以便编译和运行时能正确引用。 4. **编写代码**:创建一个新的Java类,例如HelloSWT.java,导入必要的SWT包,然后编写显示GUI组件的...

    swt 文件的执行方法

    你可以根据需要在Shell中添加它们。例如,添加一个按钮: ```java Button button = new Button(shell, SWT.PUSH); button.setText("点击我"); button.setBounds(10, 10, 80, 30); ``` 6. **事件处理**:SWT...

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    在任何基于SWT的Java项目中,首要任务就是将SWT JAR文件添加到项目的Classpath中。这一步骤确保了编译器能够识别SWT类和方法。具体操作如下: - **创建Java项目**:首先,在IDE中创建一个新的Java项目。 - **指定...

    swt table 实现换行

    根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...

    swt 组件介绍

    `Shell`则代表应用程序中的窗口,可以有多个`Shell`对象存在,它们可以作为顶层窗口附加到`Display`上,也可以附加到其他`Shell`上。 创建`Display`和`Shell`实例的基本代码如下所示: ```java Display display = ...

    Java桌面程序SWT记事本小例子

    1. **初始化 SWT**: 在你的 Java 程序中,你需要先导入必要的SWT库,然后创建一个Display对象,它是SWT应用程序的主要入口点。 ```java import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; ...

    SWT界面编程知识汇总

    2. **创建Shell**:`Shell`是SWT中的窗口对象,相当于其他GUI库中的Frame或Window。`new Shell(display)`创建了一个新的Shell,它需要Display对象作为参数。 3. **设置Shell的布局**:布局管理器决定了窗口内组件的...

Global site tag (gtag.js) - Google Analytics