什么是swing/SWT与/JFace/RCP/插件开发

SWT与JFace关系

 

   SWT是eclipse公司发布的一个GUI编程框架,即是说,这个是最基本的开发工具。  JFace是对SWT的一个封装,它丰富、优化了SWT的功能。  RCP呢,就是Rich Client Platform,它相当于一个组件的集合。你可以用它来定制你自己的eclipse产品。  他们并不是三选一的关系。  SWT是对操作系统GUI API的封装,因此没有做更多应用层次的封装,比如要显示一个对话框,就要自己去画【确定】、【取消】按钮,要弹出消息对话框就要自己去写数行代码。为了简化SWT的开发,IBM开发出了JFace,JFace不是与SWT格格不入的,JFace就是调用SWT实现了更多实际应用开发中要用到的公共类。SWT和JFace的关系就像Windows开发中Windows SDK和MFC的关系一样,我们在开发的时候应当尽量去使用JFace的东西,只有当JFace的东西不满足我们要求的时候才去直接求助SWT。

 

Eclipse开发中有很多名词: 插件开发  ,RCP ,SWT,Jface很容易让人迷糊
做个大概的比喻,如果说SWT是C++的话  那么JFace就像STL对SWT做了简单的封装  Rcp就像MFC封装更多
而插件开发和Rcp唯一不同就使导出不同,一个导出成plug in,另一个导出成独立运行的程序。其实没有什么区别

 

RCP的全称是Rich Client Platform,可以把它看成是eclipse的骨架,swt就是器官与血肉。我们可以把这个骨架拿过来填入自己的器官和血肉,创造属于自己的"eclipse".
使用RCP来开发Java桌面应用可以把开发的焦点转移到系统的逻辑功能上,而不是界面上。我们自己的程序可以继承Eclipse的风格与功能,而不用自己去编写诸如菜单,工具条,子窗口等等的界面元素。甚至我们可以把Eclipse本身的功能插件,比如Console拿来放在自己的程序里,这样就避免了很多重复开发。
搜索
简单来说,rcp就是把eclipse框架抽出来,形成自己的框架,然后,你可以用swt来完善里面的东东,比如,viewer

 

 

http://www.shangxueba.com/jingyan/86425.html

定制SWT/RCP界面:如何编写一个漂亮的SWT/RCP界面

 

http://www.cnblogs.com/happyPawpaw/archive/2012/09/18/2690722.html

 

http://www.blogjava.net/dreamstone/archive/2006/11/06/79371.html

Eclise Rcp 系列一 第一个SWT程序

 

http://zhidao.baidu.com/link?url=NwAElS0X2T-Pxn_rOXMIj8qgvkhGrR1iJA8Rj9z14g0cZO_Gga1bnAujrNE6QtjGx1yMTOoTrUnIOKGUz2OpNK

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
开发项目SWINGRCPSWT.JFACE的分析 第一个SWT程序 下面让我们开始一个SWT程序。(注意:以下的例子和说明主要针对Windows平台,其它的操作系统应该大同小异)。首先要在Eclipse安装文件中找到SWT包,Eclipse组织并不提供单独的SWT包下载,必须下载完整的Eclipse开发环境才能得到SWT包。SWT是作为Eclipse开发环境的一个插件形式存在,可以在${你的eclipse安装路径}\plugins路径下的众多子目录下去搜索SWT.JAR文件,在找到的JAR文件中包含了SWT全部的Java类文件。因为SWT应用了JNI技术,因此同时也要找到相对应的JNI本地化库文件,由于版本和操作平台的不同,本地化库文件的名称会有些差别,比如SWT-WIN32-2116.DLL是Window平台下Eclipse Build 2116的动态库,而在Unix平台相应版本的库文件的扩展名应该是.so,等等。注意的是,Eclipse是一个开放源代码的项目,因此你也可以在这些目录中找到SWT的源代码,相信这会对开发很有帮助。下面是一段打开空窗口的代码(只有main方法)。 import com.e2one.example; public class OpenShell{ public static void main(String [] args) { Display display = new Display(); Shell shell = new Shell(display); shell.open(); // 开始事件处理循环,直到用户关闭窗口 while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } } 确信在CLASSPATH中包括了SWT.JAR文件,先用Javac编译例子程序。编译无错后可运行java -Djava.library.path=${你的SWT本地库文件所在路径} com.e2one.example.OpenShell,比如SWT-WIN32-2116.DLL件所在的路径是C:\swtlib,运行的命令应该是java -Djava.library.path=c:\swtlib com.e2one.example.OpenShell。成功运行后,系统会打开了一个空的窗口。 剖析SWT API 下面再让我们进一步分析SWT API的组成。所有的SWT类都用org.eclipse.swt做为包的前缀,下面为了简化说明,我们用*号代表前缀org.eclipse.swt,比如*.widgets包,代表的是org.eclipse.swt.widgets包。 我们最常用的图形构件基本都被包括在*.widgets包中,比如Button,Combo,Text,Label,Sash,Table等等。其中两个最重要的构件当数Shell和Composite。Shell相当于应用程序的主窗口框架,上面的例子代码中就是应用Shell构件打开一个空窗口。Composite相当于SWING中的Panel对象,充当着构件容器的角色,当我们想在一个窗口中加入一些构件时,最好到使用Composite作为其它构件的容器,然后再去*.layout包找出一种合适的布局方式。SWT对构件的布局也采用了SWING或AWT中Layout和Layout Data结合的方式,在*.layout包中可以找到四种Layout和与它们相对应的布局结构对象(Layout Data)。在*.custom包中,包含了对一些基本图形构件的扩展,比如其中的CLabel,就是对标准Label构件的扩展,上面可以同时加入文字和图片,也可以加边框。StyledText是Text构件的扩展,它提供了丰富的文本功能,比如对某段文字的背景色、前景色或字体的设置。在*.custom包中也可找到一个新的StackLayout布局方式。 SWT对用户操作的响应,比如鼠标或键盘事件,也是采用了AWT和SWING中的Observer模式,在*.event包中可以找到事件监听的Listener接口和相应的事件对象,例如常用的鼠标事件监听接口MouseListener,MouseMoveListener和MouseTrackListener,及对应的事件对象MouseEvent。 *.graphics包中可以找到针对图片、光标、字体或绘图的API。比如可通过Image类调用系统中不同类型的图片文件。通过GC类实现对图片、构件或显示器的绘图功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值