- 浏览: 149521 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
EclipseEye:
fair_jm 写道不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程 -
fair_jm:
不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程
SWT技术是一套基于Java的第三方图形工具库。它的设计思想是提供一套通用的API,使得开发出的图形程序可以不加修改地在平台之间移植,而且在外观上和速度上与使用C/C++等语言在操作系统平台上开发出来的本地图形程序毫无差距,还可以使用鼠标拖放操作、系统托盘等高级的系统服务。
要实现本地化的效果,程序一定要与本地图形系统发生交互,在与操作系统交互时,SWT使用JNI技术。JNI(Java Native Interface)是以前sun公司为Java语言设计的用来与C/C++程序交互的技术。简单地说,可以将它理解成为将Java语言编写的接口和C语言编写的函数绑定,从而使得调用Java接口就等于调用C函数的技术。使用JNI,也可以在C代码中反向操作Java代码的内容,其工作方式如下:
Java代码:
--------------------------------------------
public static void main(String[] args){
......
method(...);
......
}
//用来声明JNI方法的接口,这个接口可以被其他Java代码调用
//
调用这个Java接口就等于调用下面的C函数
public static native int method(...);
--------------------------------------------
C代码:
//C代码负责JNI方法的具体实现,在这里可以调用操作系统API或执行其他C程序,也可以回调Java程序
JNIEXPORT jint JNICALL Java_JNI_method (JNIEnv *,jclass)....
--------------------------------------------
目前主流的图形平台都提供了C语言的API供开发者使用。出于性能的考虑,SWT并没有在操作系统的API上面再做封装,而是利用JNI将它们一对一地映射到Java平台上。这些JNI函数的访问权限都被限制在了SWT的包内部,外部程序只能通过SWT的API使用它们,不能直接调用。针对不同的图形平台,JNI接口也各不相同,SWT API的任务就是封装这些不同点。这些API将基本的图形操作进行抽象,并将不同的JNI调用封装在内部,从而以一致的接口呈现给使用者。使用SWT开发,主要就是操作这些API。
------------
SWT的基本体系结构共分为三层:
1)第一层是SWT的API。
外部开发者使用SWT时就是使用这些API编写SWT程序。这里包含了SWT的控件(文本框,按钮等)、事件处理(各种事件及监听器)等和图形界面开发者关系最为密切的部分;同时也只有这一部分的代码对外部开发者可见。底层C语言风格的API,在这一层上被封装为对象供外部开发者使用,但在封装的具体实现代码上,对于不同系统平台会有微小的差别。比如Win32平台的SWT在打开一个窗口时会针对WinCE和WindowsXP的特殊情况做不同的处理,而Linux GTK图形平台的SWT则没有这段代码。从整体上看,这部分代码在不同平台上基本相似。
2)第二层是JNI相关的代码。
每一个操作系统提供的API都拥有自己定义的一系列独特的数据类型作为参数类型及返回值。这一层的代码除了包含对应到C函数的Java接口外,还有这些特殊数据类型用Java实现。这一层的代码只在SWT内部可见,虽然也是Java编写,但其内容在每一种SWT版本中都是完全不同的。
3)第三层是使用C语言编写的操作系统本地动态链接库文件。
这些库文件将操作系统上和图形界面相关的C语言的API封装成Java可以调用的形式。这一层的代码全部是由C语言编写的,在Windows平台上编译成DLL文件,而在Linux平台上则编译为so文件。
在Windows XP上SWT调用操作系统API以创建一个窗口的函数调用过程如下。具体的创建窗口工作比下面显示的要略微复杂一些,还包括为窗口注册回调函数等其他内容,这里只列出了其中的部分核心流程。
(SWT的三层结构--SWT API;JNI Interface & Types;Native Library(DLL))
1)开发者通过调用SWT API创建一个窗口实例,并调用它的open方法:shell.open();
2)SWT API 呼叫OS.java中的CreateWindowEx函数以创建一个窗口:OS.createWindowEx
3)通过JNI映射,这个调用被翻译成对动态链接库中对应C函数的调用:OS_NATIVE("CreateWindowEx")
4)动态链接库中的函数调用Win32 API CreateWindowEx,完成窗口创建:Windows XP OS
要实现本地化的效果,程序一定要与本地图形系统发生交互,在与操作系统交互时,SWT使用JNI技术。JNI(Java Native Interface)是以前sun公司为Java语言设计的用来与C/C++程序交互的技术。简单地说,可以将它理解成为将Java语言编写的接口和C语言编写的函数绑定,从而使得调用Java接口就等于调用C函数的技术。使用JNI,也可以在C代码中反向操作Java代码的内容,其工作方式如下:
Java代码:
--------------------------------------------
public static void main(String[] args){
......
method(...);
......
}
//用来声明JNI方法的接口,这个接口可以被其他Java代码调用
//
调用这个Java接口就等于调用下面的C函数
public static native int method(...);
--------------------------------------------
C代码:
//C代码负责JNI方法的具体实现,在这里可以调用操作系统API或执行其他C程序,也可以回调Java程序
JNIEXPORT jint JNICALL Java_JNI_method (JNIEnv *,jclass)....
--------------------------------------------
目前主流的图形平台都提供了C语言的API供开发者使用。出于性能的考虑,SWT并没有在操作系统的API上面再做封装,而是利用JNI将它们一对一地映射到Java平台上。这些JNI函数的访问权限都被限制在了SWT的包内部,外部程序只能通过SWT的API使用它们,不能直接调用。针对不同的图形平台,JNI接口也各不相同,SWT API的任务就是封装这些不同点。这些API将基本的图形操作进行抽象,并将不同的JNI调用封装在内部,从而以一致的接口呈现给使用者。使用SWT开发,主要就是操作这些API。
------------
SWT的基本体系结构共分为三层:
1)第一层是SWT的API。
外部开发者使用SWT时就是使用这些API编写SWT程序。这里包含了SWT的控件(文本框,按钮等)、事件处理(各种事件及监听器)等和图形界面开发者关系最为密切的部分;同时也只有这一部分的代码对外部开发者可见。底层C语言风格的API,在这一层上被封装为对象供外部开发者使用,但在封装的具体实现代码上,对于不同系统平台会有微小的差别。比如Win32平台的SWT在打开一个窗口时会针对WinCE和WindowsXP的特殊情况做不同的处理,而Linux GTK图形平台的SWT则没有这段代码。从整体上看,这部分代码在不同平台上基本相似。
2)第二层是JNI相关的代码。
每一个操作系统提供的API都拥有自己定义的一系列独特的数据类型作为参数类型及返回值。这一层的代码除了包含对应到C函数的Java接口外,还有这些特殊数据类型用Java实现。这一层的代码只在SWT内部可见,虽然也是Java编写,但其内容在每一种SWT版本中都是完全不同的。
3)第三层是使用C语言编写的操作系统本地动态链接库文件。
这些库文件将操作系统上和图形界面相关的C语言的API封装成Java可以调用的形式。这一层的代码全部是由C语言编写的,在Windows平台上编译成DLL文件,而在Linux平台上则编译为so文件。
在Windows XP上SWT调用操作系统API以创建一个窗口的函数调用过程如下。具体的创建窗口工作比下面显示的要略微复杂一些,还包括为窗口注册回调函数等其他内容,这里只列出了其中的部分核心流程。
(SWT的三层结构--SWT API;JNI Interface & Types;Native Library(DLL))
1)开发者通过调用SWT API创建一个窗口实例,并调用它的open方法:shell.open();
2)SWT API 呼叫OS.java中的CreateWindowEx函数以创建一个窗口:OS.createWindowEx
3)通过JNI映射,这个调用被翻译成对动态链接库中对应C函数的调用:OS_NATIVE("CreateWindowEx")
4)动态链接库中的函数调用Win32 API CreateWindowEx,完成窗口创建:Windows XP OS
发表评论
-
再说SWT中的滚动面板ScrolledComposite实现
2013-06-19 15:43 2329记得以前写过一篇关于滚动面板的文章 SWT中 Scrolle ... -
OSGi参考资料
2013-04-18 01:11 684基于 OSGi 的面向服务的组件编程 探索 OSGi 框架的组 ... -
CDT(编辑、调试)参考资料
2013-04-17 02:15 1115CDT编辑器 --------- 构建基于 CDT 的编辑器, ... -
Workspace Resource框架专题(3)处理工作空间资源更改事件
2013-04-17 01:44 13803 处理工作空间资源更改事件 工作空间API允许工具对它 ... -
Workspace Resource框架专题(2)workspace 框架API
2013-04-17 01:27 14912 工作空间API 本 ... -
Workspace Resource框架专题(1)Resource的概念
2013-04-17 01:12 13941 Resource的概念 如 ... -
如何恢复断点及Marker
2013-03-05 00:41 0如何恢复断点及Marker -
深入Workbench框架
2013-03-01 02:10 1730深入Workbench框架(结合UIPersistent) 1 ... -
Eclipse插件开发中的Action
2013-02-24 23:10 2006插入点用来定义菜单出 ... -
Eclipse开发中编辑器(Editors)和视图(View)总结
2013-02-24 22:58 29141.视图(Views) 视图( ... -
SWT/JFace专题 --- 对话框向导(Dialogs Wizards)
2013-02-24 22:42 2244对话框向导(Dialogs Wizar ... -
SWT/JFace专题 --- JFace
2013-02-24 22:37 1645JFace JFace是基于SWT的一套图形工具包,它没有为 ... -
SWT/JFace专题 --- SWT中Display和多线程
2013-02-24 15:25 3242Display 1.Display 的创建 一个SWT程序 ... -
SWT/JFace专题 --- SWT API 结构
2013-02-23 18:31 1081SWT API 结构 1.布局类(l ... -
Eclipse启动过程(源码级剖析)
2013-02-20 03:24 3423双击eclipse安装目录下的eclipse.exe运行后,会 ... -
Eclipse平台体系结构
2013-02-21 23:56 18951.Eclipse平台体系结构 1 ... -
RCP平台架构
2013-02-23 14:11 1489RCP 富客户端通常是指具有独立用户界面的客户端程序。富客户 ... -
Ant构建脚本相关
2013-02-18 01:26 0Ant构建脚本相关 -
CDT源码架构研究
2013-02-18 01:24 0CDT源码架构研究 -
SWT/JFace专题 --- SWT/JFace概述
2013-02-23 16:59 869SWT(Standerd Widget Toolkit,标准图 ...
相关推荐
在"SWT/JFace专题 --- SWT/JFace概述"中,可能涉及以下知识点: 1. SWT控件:包括Button、Text、Table、Tree、Composite等基本和复杂的控件,以及如何使用它们构建用户界面。 2. JFace数据绑定:讲解如何使用...
本教程将涵盖 SWT/JFace 的概览、目的、许可证和平台支持、SWT 和 JFace 的区别、使用 SWT/JFace 构建 GUI 应用程序、使用 SWT/JFace 管理颜色、绘图、字体、图案等内容。 SWT/JFace 的目的: SWT/JFace 的主要...
标题中的"swt/jface.jar"是一个关键组件,它在Java开发环境中用于构建用户界面。SWT(Standard Widget Toolkit)是IBM开发的一个开源GUI库,它提供了与原生操作系统更紧密集成的图形用户界面控件。JFace是建立在SWT...
SWT-JFace-3.4-API-.chm 文件很可能是 SWT 和 JFace API 的离线文档,包含了详细的类、方法和示例,是学习和开发过程中不可或缺的参考资料。通过深入学习这个 API 文档,开发者可以充分利用 SWT 和 JFace 的功能,...
SWT/Jface开发入门指南是一篇专为初学者编写的教程,旨在帮助他们快速搭建开发环境并掌握使用SWT和JFace编写图形化应用程序的基本技巧。以下是该教程所涵盖的关键知识点: 1. **SWT和JFace简介**: - SWT全称...
SWT (Standard Widget Toolkit) 和 JFace 是 Eclipse 开发框架中的两个重要组件,它们主要用于构建图形用户界面(GUI)。SWT 是一个底层的 GUI 工具包,它提供了与操作系统直接交互的能力,使得应用程序能够拥有原生...
Eclipse SWT/JFace 核心应用 带书签 Eclipse SWT/JFace
SWT/JFace开发实例
3.1 SWT/JFACE 的组件类结构图 组件类层次结构复杂,包括各种按钮、文本框、列表、树形视图等。这些组件都是通过继承自Control类的子类实现的。 3.1.1 Display 类简介 Display是所有SWT组件的顶级容器,它管理窗口...
Eclipse SWT(Standard Widget Toolkit)和JFace是Java开发中用于构建图形用户界面(GUI)的库,尤其在开发Eclipse插件和RCP(Rich Client Platform)应用程序时非常重要。这两个库提供了丰富的组件和框架,使得...
SWT (Standard Widget Toolkit) 和 JFace 是两个与Java GUI编程密切相关的库,它们由Eclipse项目维护。本文将深入探讨这两个技术,并结合《SWT/JFace in Action》这本书的相关内容,提供一个全面的知识框架。 SWT是...
Eclipse SWT/JFace是Eclipse框架中的两个关键组件,它们为构建用户界面提供了强大的支持。SWT(Standard Widget Toolkit)是Eclipse的本机GUI库,而JFace是基于SWT构建的更高层次的抽象层,它简化了UI开发过程。 ...
【SWT/JFace实例开发】是一份针对Java GUI编程的学习资源,主要聚焦于SWT(Standard Widget Toolkit)和JFace这两个强大的图形用户界面库。SWT是Eclipse项目的一部分,它提供了一套与操作系统直接交互的原生控件,...
Eclipse SWT (Standard Widget Toolkit) 和 JFace 是两个在Java编程环境下用于构建图形用户界面(GUI)的重要库,尤其在开发Eclipse插件和RCP(Rich Client Platform)应用程序时非常常见。SWT是Eclipse项目的一个...
5. 压缩包子文件的文件名称列表:"SWT-JFace-3.5-API-html",这个文件可能是压缩包内的主文件,包含了整个SWT和JFace 3.5版本的API文档。解压后,开发者可以通过打开这个HTML文件来访问完整的API指南。 在开发过程...
【SWT/JFace从入门到精通】 SWT(Standard Widget Toolkit)和JFace是Eclipse平台下用于构建图形用户界面(GUI)的两个关键库。它们为Java开发者提供了丰富的控件和高级UI功能,使创建桌面应用程序变得简单而强大。...
《Eclipse SWT/Jface核心应用》全面介绍了SWT、JFace和RCP的相关知识。全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的...
- **理解SWT和JFace的架构与方法论**:为了更好地利用SWT和JFace,开发者需要深入了解这两个库的内部结构和设计理念。这有助于在实际开发过程中做出更合适的技术决策,提高应用程序的整体质量和性能。 - **GUI设计...
基于 Java 桌面程序开发的图形库...本书主要讲解了如何使用 SWT 和 JFace 进行应用程序的开发,通过本书系统而全面的 SWT/JFace 知识学习,将帮助读者快 速开发出完美、实用的 GUI 程序,轻松完成繁琐的界面、菜单编程.