`
whui0110
  • 浏览: 84253 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

shell和display

 
阅读更多
在前一个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()方法关闭一个窗体。
分享到:
评论

相关推荐

    swt工具文档 swt工具文档

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

    Shell和frame窗体关闭确认窗口

    1. **创建Display和Shell实例**:与Swing类似,SWT也提供了一个顶层容器`Shell`用于创建窗口。同样地,还需要创建一个`Display`对象来控制窗口的显示。 2. **设置Shell属性**:设置了Shell的大小和标题。 3. **添加...

    SWT创建Shell窗口

    5. 显示和运行Shell:最后,我们需要调用`shell.open()`方法来显示Shell,并在一个循环中等待用户关闭窗口: ```java shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display....

    swt小技巧,SWT的SHELL样式

    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编程基础是掌握Linux系统管理和自动化任务执行的关键技能之一。本文主要介绍如何开始编写Shell脚本,如何处理注释,以及如何执行脚本。同时,我们还将深入探讨Bash中的各种变量,包括环境变量、位置变量...

    华为光猫shell命令补全文件

    Shell命令补全通常包含一系列自动提示和补全功能,帮助用户快速输入正确的命令、参数或文件名。在华为光猫的环境中,这个文件可能包含了常用命令的缩写、完整的命令路径、以及相关参数的提示。使用这种补全文件,...

    jxse-shell-2.5

    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分步实现俄罗斯方块游戏

    Shell脚本是一种使用Bash或其他Unix/Linux shell语言编写的程序,通常用于系统管理任务,但在这里被用来创建一个图形界面的游戏,展示了Shell编程的灵活性和实用性。 首先,我们需要了解Shell编程的基础知识。Shell...

    【原创】【源代码】myshell:操作系统编程-自己用C语言写的Linux下的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脚本专家指南

    本书不仅提供了实用的脚本和技巧,还深入探讨了Shell脚本编程的核心概念和技术。下面是对书中各章节涉及的关键知识点的总结。 ### 第一部分 基本脚本编程技术 #### 第1章 shell脚本的错误检测 - **shell跟踪选项**...

    shell 图书管理系统

    ### 知识点总结 #### 一、Shell脚本与图书管理系统 - **Shell脚本简介**:Shell脚本是用于Unix或类Unix系统(如Linux)中的脚本语言,...通过上述分析,我们可以了解到Shell脚本如何组织和执行命令来完成特定的任务。

    ThinkCMF 任意内容包含getshell漏洞

    5. display 函数的作用是加载模板和页面输出,所对应的参数为:templateFile 为模板文件地址,charset 模板字符集,contentType 输出类型,content 输出内容。templateFile 参数会经过 parseTemplate() 方法处理。 6...

    BIOS shell 下面刷 log

    2. **日志查看**: 在某些BIOS Shell中,存在如`LOG`或`DISPLAY_LOG`这样的命令,允许用户在控制台上显示当前的POST日志。这有助于识别硬件问题,比如内存错误、驱动器问题等。 3. **日志保存**: 如果需要保存日志以...

    linux系统获取基础硬件信息的shell

    本文将详细介绍如何使用Shell命令来查询和展示Linux系统的硬件详情。 首先,我们需要了解几个关键的硬件组成部分,包括处理器(CPU)、内存(RAM)、磁盘存储、网络接口以及显卡等。以下是一些常用的Shell命令,用于...

    Shell Scripting Overview

    Bourne Shell编程是Shell脚本的基础,它提供了一种简单的方法来组合和控制Linux命令。下面我们将深入探讨Shell脚本的基本元素和常用特性。 在提供的示例脚本`display`中,我们可以看到以下几个关键点: 1. **注释*...

    Linux下的程序开发:基础SHELL编程

    在Linux操作系统中,Shell编程是系统管理员和程序员日常工作中不可或缺的一部分。SHELL,尤其是Bash(Bourne-Again SHell),是Linux默认的命令解释器,它允许用户通过命令行与操作系统进行交互,同时也提供了编写...

    swt线程冲突与解决

    shell = new Shell(display); shell.setSize(700, 400); shell.setText("SWT MainWindow"); } public int open() { createControl(shell); shell.open(); while (!shell.isDisposed()) { while (!shell....

    SSH隧道管理内部服务器putty,ssh secure shell

    接下来我们将详细介绍如何使用Putty和SSH Secure Shell这两款工具来建立SSH隧道,并实现端口转发的功能。 ### 使用Putty建立SSH隧道 #### 步骤1:配置SSH会话参数 1. 打开Putty程序。 2. 在左侧树状菜单中,选择...

    Linux下Shell编程全解析

    在 Linux 系统中,常用的 Shell 有 Bourne Shell、C Shell、Korn Shell 和 Bourne Again Shell 等。每种 Shell 都有其特点和优点,用户可以根据自己的需求选择合适的 Shell。 Bourne Shell 是 AT&T Bell 实验室的 ...

Global site tag (gtag.js) - Google Analytics