一:SWT 对比Swing的两个重要区别:
1)SWT/JFace依靠JNI来管理操作系统的渲染而不是由其自己来实施。
——对比Swing:
Swing的渲染 为了确保界面在跨平台是能保持一致,Swing对用户界面的每一个细节的渲染进行完全控制,也就是Java虚拟机指令到其组件的每一个象素和具体行为。虽然Swing也同底层平台保持通信,但是却不使用操作系统任何已内置的对象,即其白手起家,创建每一个对象。因为这些组件都运行于较高层次,它们被引喻为轻量级组件。这些组件在任何Java支持的平台上表现一致。
2)SWT/JFace的资源管理,不依赖于垃圾自动回收机制
——对比Swing:
对操作系统资源使用AGC是困难的,由于Swing在高端层次建立了其轻量级的组件,所以这还不成为一个问题。然而,如果在低端层次如SWT小部件同样去使用自动回收机制,那么在跨平台环境下错误的易发性和不确定性将会是个灾难。
二:JFace适配器:
阅读器 分离小部件的外观和信息
动作和实施 简化和组织事件处理进程
图案和字体注册 管理和分配/释放图案、字体资源
对话框和向导 扩展SWT对话框和用户互动的能力
三:基本容器归纳
重要的对象是Display,它在后台与操作系统保持着通信。这一通信确保你的SWT/JFace应用程序可以使用原生组件并处理事件。虽然Display自己没有任何外观,但其它的小部件都需要它的运作才得以成形。 SWT提供一个Shell类作为大一统的GUI应用程序和对话框的容器。Shell形成GUI的父窗口并为子小部件们和Display提供通信。使用风格值,你可以定制Shell的外观和行为。 与上面相对照的,JFace的应用程序使用ApplicationWindow作为它们的主容器。不同于Shell, ApplicationWindow没有内置的form。这意味着你可以随心所欲地指定你的顶级窗口;另外,这些对象提供的方法可以轻易与其他特性集成,如菜单、工具条或是状态栏等。
四:理解Widget类
Widget是所有在SWT和JFace中所有显示信息以及和用户互动的类的超类。然而不仅它是一个抽象类,另外Eclipse.org组织也强烈反对由其产生子类,因为其间牵涉太多的复杂性。因此,你不能从Widget类继承或是在你的代码中直接使用它。事实上,这个类的重要性是在于它把所有的小部件统合在一个结构下。
五:Control类
在Control类中的对象在操作系统中有一个直接的对应物,你可以通过类里的句柄域加以接近它。然而在Control类之外,SWT还提供了不少的小部件。
六:JFace中的事件处理
一个监听器接口能够为不同的control提供相同的事件处理,但是其使用依赖于发起这一事件的组件。接收鼠标事件的监听器不能用以菜单栏的选择。即便是非类型化的事件也只是在程序指定了哪一类的control来触发事件后才有用。 但是当你处理复杂的用户界面时,将事件处理能力从产生事件的GUI组件中分离出来的做法就很有帮助了。
Jface用其Action和ActionContributionsItem类提供了这样的分离。一个ActionContributionItem 组合了一个GUI组件的功能和添附于其上的监听器类。当用户与其互动时,将会触发与其相联系的动作类,以负责处理该事件。虽然这看上去和SWT的监听器/事件模型相似,但是这些类却更加抽象,易于使用,范围相对专一。
如果存在这样一组套件,它仅关注于平时经常使用的小部件和事件,并将这一切的使用尽可能作简化,那将极大地简化事件编程。JFace的事件处理结构所做的正是如此:它的目标就是为了时事件处理更加简介明了,它允许程序员仅使用少量的几行代码来接收和处理通常的事件。为了达成这一目标,JFace做了如下三个假设:
1)用户的动作将限于按钮、工具条和菜单
2)每一个组件将仅有一个事件与之相联系
3)每一个事件仅有一个事件处理器
JFace中的一个Action可以简单地理解成一个命令。在JFace里面,Action可以关联到菜单,工具条,以及按钮(也就是Button)。
七:事件处理概述:
很明显的,对于复杂的图形界面必须综合使用两种事件处理机制。虽然JFace可以提供菜单、工具条和按钮的快速编程,但是我们还需要SWT来处理键盘事件以及和Shell、表等小部件相关的事件。另外,JFace类也无法区分一个鼠标右击和左击事件。因此,对于一个GUI变成人员事实上是在寻找一条综合使用两个套件以最少代码获取最大功能的途径。
分享到:
相关推荐
SWT配置 SWT配置 SWT配置 SWT配置 SWT配置 SWT配置 SWT配置 SWT配置
SWT 整理出的部分资料 SWT 整理出的部分资料 SWT 整理出的部分资料
64位windows操作系统使用的SWT库
swt工具文档 swt工具文档 swt工具文档 swt工具文档 swt工具文档 swt工具文档
SWT examples,SWT官方例子:http://www.eclipse.org/swt/examples.php 该页面所要下载的例子 其中,swt的例子在\plugins\org.eclipse.swt.examples.source_3.7.0.v3740f.jar中
下载编译的SWT库,版本号4.911,包含多个版本: org.eclipse.swt.cocoa.macosx.x86_64 org.eclipse.swt.gtk.linux.aarch64 org.eclipse.swt.gtk.linux.arm org.eclipse.swt.gtk.linux.ppc64le org.eclipse.swt.gtk....
SWT插件中文教程SWT常用方法SWT插件中文教程SWT常用方法SWT插件中文教程SWT常用方法SWT插件中文教程SWT常用方法SWT插件中文教程SWT常用方法SWT插件中文教程SWT常用方法
swt 基础教程 swt 基础教程 swt 基础教程swt 基础教程swt 基础教程
swt教程 有关SWT怎么应用
SWT官方api文档 开发基于swt的GUI程序必备手册
swt.jar swt.jar swt.jar swt.jar swt.jar
org.eclipse.swt.SWT.class org.eclipse.swt.SWTError.class org.eclipse.swt.SWTException.class org.eclipse.swt.accessibility.ACC.class org.eclipse.swt.accessibility.Accessible.class org.eclipse.swt....
swt-api java swt GUI java界面编程,swt的开发DOC,谁用谁知道,一般人我不告诉他
swt table 实现换行
swt 画图小程序 自由画线 矩形。。import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseMoveListener; ...
swt框架 适用与window下java窗口开发~~~~
基本上关于swt_win32_extension该有的都有了,其中org.eclipse.swt.win32.jar并不是必须的,如果出现OS.class未找到异常等,就在构建路径里加上org.sf.feeling.swt.win32.extension_1.1.0.jar这个包就可以了。...
swt 官方源码以及jar包 使用方法可参照 http://www.eclipse.org/swt/eclipse.php 简单说就是可以直接当项目来导入,源码在src.zip中,关联后即可查看
swt资源释放问题,详细介绍swt如何释放屏幕资源
SWT Table 单元格编辑实例代码