在前一个helloWorld程序中,虽然例子很简单,但是反映了我们编写swt程序的主要步骤:
1.创建一个Display对象
2.创建一个或者多个Shell对象,你可以认为Shell代表了程序的窗口。
3.在Shell内创建各种部件(widget)
4.对各个部件进行初始化(外观,状态等),同时为各种部件的事件创建监听器(listener)
5.调用Shell对象的open()方法以显示窗体
6.各种事件进行监听并处理,直到程序发出退出消息
7.调用Display对象的dispose()方法以结束程序。
现在让我深入了解一下在swt程序中最关键的两个类:Display和Shell。
Display:与操作系统沟通的桥梁
我们在前面说过,每个swt程序在最开始都必须创建一个Display对象,它所起的作用就是担当swt与操作系统沟通的一座桥梁。Display对象主要负责swt和操作系统的通信,它将swt的各种调用转化为操作系统的底层调用,控制操作系统为swt分配的资源。Display实际上担当着“幕后工作者”的身份,它为swt屏蔽了对操作系统图形资源的调用,但是在你创建的图形用户界面中看不到它的影子。
在前面的helloWorld程序中,我们可以看到构建一个Display对象是和普通的java对象一样通过构造函数实现的。它为实现图形界面准备了最基本的条件。而在程序结束时我们必须显示的调用dispose()方法来释放程序运行中所获得的资源。在这点上也是swt与其它java程序的最大区别,就是程序中操作部件要遵守谁创建谁销毁的原则,这点会在后面的程序中体现出来。一般来说,一个swt程序只需要一个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.”
大概意思就是:在建立swt的程序时一般总是只需要一个display对象。但也有特别的情况,有的平台不支持swt创建多个活动的display对象。也就是说,如果已存在一个display对象,但是给它没有发送disose()消息来销毁它,有的平台是不支持再创建一个新的display对象。
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。对于这些风格的含义可以从字面意义上看出来,在创建一个Shell时,我们可以这样定义它的风格:
Shell shell = new Shell(display,SWT.CLOSE | SWT.SYSTEM_MODAL);
因为swt可以运行与各种平台纸上,而这些平台上的窗口管理器千差万别,所以所有这些风格都不是肯定可以实现的。在swt的javadoc中,这被称为暗示(hints)。Shell对象方法大都和GUI有关,比如setEnabled()设定了窗体是否能和用户进行交互,setVisible()设定了窗体是否可见,setActive()将窗体设为当前活动窗口。我们可以用open()方法打开一个窗体,close()方法关闭一个窗体。
分享到:
相关推荐
1. **初始化Display和Shell**: 应用程序开始时,首先创建Display对象,然后创建一个或多个Shell对象。 2. **添加Widgets**: 在Shell中添加所需的Widgets,如Button、Text等,并设置其属性。 3. **设置布局**: 选择...
1. **创建Display和Shell实例**:与Swing类似,SWT也提供了一个顶层容器`Shell`用于创建窗口。同样地,还需要创建一个`Display`对象来控制窗口的显示。 2. **设置Shell属性**:设置了Shell的大小和标题。 3. **添加...
5. 显示和运行Shell:最后,我们需要调用`shell.open()`方法来显示Shell,并在一个循环中等待用户关闭窗口: ```java shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display....
public static void centerShell(Display display, Shell shell) { Rectangle displayBounds = display.getPrimaryMonitor().getBounds(); Rectangle shellBounds = shell.getBounds(); int x = displayBounds.x...
Linux Shell编程基础是掌握Linux系统管理和自动化任务执行的关键技能之一。本文主要介绍如何开始编写Shell脚本,如何处理注释,以及如何执行脚本。同时,我们还将深入探讨Bash中的各种变量,包括环境变量、位置变量...
Shell命令补全通常包含一系列自动提示和补全功能,帮助用户快速输入正确的命令、参数或文件名。在华为光猫的环境中,这个文件可能包含了常用命令的缩写、完整的命令路径、以及相关参数的提示。使用这种补全文件,...
cat Concatenate and display a Shell object chpgrp Change the current peer group clear Clear the shell's screen dumpcm Dump the content of the local cache (CM) env Display environment variables exit ...
Shell脚本是一种使用Bash或其他Unix/Linux shell语言编写的程序,通常用于系统管理任务,但在这里被用来创建一个图形界面的游戏,展示了Shell编程的灵活性和实用性。 首先,我们需要了解Shell编程的基础知识。Shell...
The shell environment should contain shell=<pathname>/myshell where <pathname>/myshell is the full path for the shell executable (not a hardwired path back to your directory, but the one from which it...
本书不仅提供了实用的脚本和技巧,还深入探讨了Shell脚本编程的核心概念和技术。下面是对书中各章节涉及的关键知识点的总结。 ### 第一部分 基本脚本编程技术 #### 第1章 shell脚本的错误检测 - **shell跟踪选项**...
### 知识点总结 #### 一、Shell脚本与图书管理系统 - **Shell脚本简介**:Shell脚本是用于Unix或类Unix系统(如Linux)中的脚本语言,...通过上述分析,我们可以了解到Shell脚本如何组织和执行命令来完成特定的任务。
5. display 函数的作用是加载模板和页面输出,所对应的参数为:templateFile 为模板文件地址,charset 模板字符集,contentType 输出类型,content 输出内容。templateFile 参数会经过 parseTemplate() 方法处理。 6...
2. **日志查看**: 在某些BIOS Shell中,存在如`LOG`或`DISPLAY_LOG`这样的命令,允许用户在控制台上显示当前的POST日志。这有助于识别硬件问题,比如内存错误、驱动器问题等。 3. **日志保存**: 如果需要保存日志以...
本文将详细介绍如何使用Shell命令来查询和展示Linux系统的硬件详情。 首先,我们需要了解几个关键的硬件组成部分,包括处理器(CPU)、内存(RAM)、磁盘存储、网络接口以及显卡等。以下是一些常用的Shell命令,用于...
Bourne Shell编程是Shell脚本的基础,它提供了一种简单的方法来组合和控制Linux命令。下面我们将深入探讨Shell脚本的基本元素和常用特性。 在提供的示例脚本`display`中,我们可以看到以下几个关键点: 1. **注释*...
在Linux操作系统中,Shell编程是系统管理员和程序员日常工作中不可或缺的一部分。SHELL,尤其是Bash(Bourne-Again SHell),是Linux默认的命令解释器,它允许用户通过命令行与操作系统进行交互,同时也提供了编写...
shell = new Shell(display); shell.setSize(700, 400); shell.setText("SWT MainWindow"); } public int open() { createControl(shell); shell.open(); while (!shell.isDisposed()) { while (!shell....
接下来我们将详细介绍如何使用Putty和SSH Secure Shell这两款工具来建立SSH隧道,并实现端口转发的功能。 ### 使用Putty建立SSH隧道 #### 步骤1:配置SSH会话参数 1. 打开Putty程序。 2. 在左侧树状菜单中,选择...
在 Linux 系统中,常用的 Shell 有 Bourne Shell、C Shell、Korn Shell 和 Bourne Again Shell 等。每种 Shell 都有其特点和优点,用户可以根据自己的需求选择合适的 Shell。 Bourne Shell 是 AT&T Bell 实验室的 ...