- 浏览: 144112 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 2256记得以前写过一篇关于滚动面板的文章 SWT中 Scrolle ... -
OSGi参考资料
2013-04-18 01:11 652基于 OSGi 的面向服务的组件编程 探索 OSGi 框架的组 ... -
CDT(编辑、调试)参考资料
2013-04-17 02:15 1073CDT编辑器 --------- 构建基于 CDT 的编辑器, ... -
Workspace Resource框架专题(3)处理工作空间资源更改事件
2013-04-17 01:44 13283 处理工作空间资源更改事件 工作空间API允许工具对它 ... -
Workspace Resource框架专题(2)workspace 框架API
2013-04-17 01:27 14232 工作空间API 本 ... -
Workspace Resource框架专题(1)Resource的概念
2013-04-17 01:12 13371 Resource的概念 如 ... -
如何恢复断点及Marker
2013-03-05 00:41 0如何恢复断点及Marker -
深入Workbench框架
2013-03-01 02:10 1633深入Workbench框架(结合UIPersistent) 1 ... -
Eclipse插件开发中的Action
2013-02-24 23:10 1961插入点用来定义菜单出 ... -
Eclipse开发中编辑器(Editors)和视图(View)总结
2013-02-24 22:58 28231.视图(Views) 视图( ... -
SWT/JFace专题 --- 对话框向导(Dialogs Wizards)
2013-02-24 22:42 2112对话框向导(Dialogs Wizar ... -
SWT/JFace专题 --- JFace
2013-02-24 22:37 1571JFace JFace是基于SWT的一套图形工具包,它没有为 ... -
SWT/JFace专题 --- SWT中Display和多线程
2013-02-24 15:25 3159Display 1.Display 的创建 一个SWT程序 ... -
SWT/JFace专题 --- SWT API 结构
2013-02-23 18:31 1041SWT API 结构 1.布局类(l ... -
Eclipse启动过程(源码级剖析)
2013-02-20 03:24 3359双击eclipse安装目录下的eclipse.exe运行后,会 ... -
Eclipse平台体系结构
2013-02-21 23:56 17741.Eclipse平台体系结构 1 ... -
RCP平台架构
2013-02-23 14:11 1403RCP 富客户端通常是指具有独立用户界面的客户端程序。富客户 ... -
Ant构建脚本相关
2013-02-18 01:26 0Ant构建脚本相关 -
CDT源码架构研究
2013-02-18 01:24 0CDT源码架构研究 -
SWT/JFace专题 --- SWT/JFace概述
2013-02-23 16:59 822SWT(Standerd Widget Toolkit,标准图 ...
相关推荐
SWT/Jface API 3.4 SWT/Jface API 3.4 SWT/Jface API 3.4 SWT/Jface API 3.4
SWT/JFACE API,是关于SWT/JFACE开发所用的API
swt/Jface用到的最基本的jar包
NULL 博文链接:https://niub.iteye.com/blog/1806580
Eclipse SWT/JFace SWT JFace 实例 Eclipse SWT/JFace 书中 全部实例
Eclipse SWT/JFace 核心应用光盘源码下载,解压后即可使用
Eclipse SWT/JFace 核心应用 带书签 Eclipse SWT/JFace
Eclipse SWT/JFace核心应用
SWT/Jface 开发入门指南 介绍以下方面的内容: ? 设定 swt 以及 JFace 的开发环境 ? swt 的一些简单部件(widget)介绍 ? JFace 的一些入门性介绍 ? swt 和 JFace 的事件模式 ? 通过一些简单的例子说明如何利用 swt ...
本文档为swt/jface的api中文帮助文档。
SWT/JFace开发实例
eclipse swt/jface核心应用源代码 带视频,找了好久,希望可以帮到大家,跟书匹配
eclipse swt/jface核心应用 这本书的源代码
《Eclipse SWT/Jface核心应用》全面介绍了SWT、JFace和RCP的相关知识。全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的...
SWT/JFace 3.5 版本的 API,HTML格式,方便开发人员查阅。
基于 Java 桌面程序开发的图形库...本书主要讲解了如何使用 SWT 和 JFace 进行应用程序的开发,通过本书系统而全面的 SWT/JFace 知识学习,将帮助读者快 速开发出完美、实用的 GUI 程序,轻松完成繁琐的界面、菜单编程.
swt/jface in action 中英文 pdf格式 + 源码下载,包含书中的所有源码,有需要的朋友可以下载,为正在学习swt、jface的朋友提供一些好资源。
王占全,苏玲 著; ISBN:7-121-05152-4 学习 SWT/JFace 的好书!
发现网上没有传类似的例子,特传个简单的例子,希望能帮助需要的人。