读 《深入内幕之消息机制探秘》

刚刚看过 狐狸蔡(foxcai) 的 《深入内幕之消息机制探秘》 解答了我心中的疑惑。

原文章 链接地址 http://blog.csdn.net/foxcai/articles/772856.aspx

 

Display 对象

看来在SWT 程序中 创建 Display 对象就是创建WINDOWS 的消息管理层(有人称 Display 是 SWT 连接WINDOWS原生功能的接口,似乎不太准确) 它的作用类似于WinSDK 中的 WinMain 主程序过程。 创建了 Display 对象 就实现了对WINDOWS 消息的监听功能,下一步就是等待所观注的某类消息的发生。

 

 

参考其他文章所述:

概括的讲Display是与操作系统沟通的桥梁

  每个swt程序在最开始都必须创建一个Display对象。它是swt与操作系统沟通的一座桥梁。它负责swt和操作系统之间的通信。它将swt/JFace的各种调用转化为系统的底层调用,控制操作系统为swt分配的资源。同时还可以通过Display对象得到操作系统的一些信息。

  Display是一个“幕后工作者”,它为swt/JFace提供支持,但是无法从用户界面中看到它的痕迹。

      构建一个Display对象是和普通的Java对象一样通过构造函数实现的。它为实现图形界面准备了最基本的条件。而在程序结束时我们必须显式地调用dispose() 方法来释放程序运行中所获得的资源。

      一般来说,一个程序只需要一个Display对象,当然也可以创建多个Display对象。

 

  Display有着众多的方法,比较常用的有如下几个。

  ·setData()和getData():这一对函数允许我们为Display对象设定一些数据,setData()的参数中key和value类似于我们在使用Map对象中key和value的含义。

  ·getShells()得到关联到该Display对象的所有没有dispose的Shell对象

  ·getCurrent()得到与用户交互的当前线程

  ·readAndDispatch()得到事件并且调用对应的监听器进行处理
  ·sleep()等待事件发生

 

 

 


 

 

Shell 对象

Shell 对象实际是实现对 Windows 窗口类的注册并创建窗口,在创建Shell 对象时就可以在构造函数的参数中指定 Windows 窗口的样式。

 

当Shell 对象创建完成时就说明窗体被创建生成,此时的 Shell 对象可以被视为窗体的代表,而各种widgets 类的控件对象也就可以向窗体中添加了。

 

 

参考其他文章所述: 

 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_MODEL);


  该窗体没有最大化和最小化按钮,并且大小是固定不变的。

 

  注意:swt运行于各种平台之上,而这些平台上的窗口管理器千差万别,所以所有这些风格都不是肯定可以实现的。在swt的javadoc中,这被称为暗示(hints)。

  Shell对象的方法大都和GUI有关,比如setEnabled()设定了窗体是否能够和用户进行交互,setVisble()设定了窗体是否可见,setActive()将窗体设为当前的活动窗口,用open()方法打开一个窗体,close()方法关闭一个窗体。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值