`
log_cd
  • 浏览: 1098634 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于SWT-JFace-RCP

阅读更多
    Eclipse 是一个通用工具平台。它是一个开放的、可用于任何东西的可扩展 IDE,它为工具开发人员提供了灵活性以及对软件技术的控制能力。Eclipse 为开发人员提供了生产大量 GUI 驱动的工具和应用程序的基础。而这项功能的基础就是基于GUI库 的SWT 和 JFace。
    SWT(Standard Widget Toolkit)本身仅仅是Eclipse组织为了开发Eclipse IDE环境所编写的一组底层图形界面 API。至今为止,SWT无论在性能上还是外观上,都超越了Sun公司提供的AWT和Swing。
    SWT/JFace是Eclispe的基础,Eclipse的Workbench就是建立在SWT/JFace之上的。
    RCP(Rich Client Platform)富客户端平台是基于Eclipse插件开发的一种应用。它是Eclipse 3.0版本后新增的一项功能。通过RCP可以快速构建应用程序,具有广阔的应用前景。

一、概念
(1)SWT(Standard Widget Toolkit):
    Eclipse中的窗口小部件工具箱,它是一组窗口组件的实现,并能底层操作系统图形用户界面平台紧密集成。另外,SWT定义了所有受支持平台上的公共可移植API,并尽可能地使用本机窗口小部件在每个平台上实现该API,这允许SWT在所有平台上维护一致的编程模型,且能立即反映底层操作系统图形用户界面外观中的任何更改。
    SWT提供了一套API,它因为Eclipse而生,但它完全可以脱离Eclipse而存在。

(2)JFace:
    在 SWT 库顶部提供常见的应用程序用户界面功能。JFace并不试图“隐藏”SWT 或者替换它的功能。它提供一些类和接口,用来处理SWT对动态用户界面相关联的常见任务。JFace是在SWT之上开发的,它和SWT形成一个交集,其中SWT提供最原始的组件。
    JFace对SWT进行了扩展,把用户熟悉的一些组件进行了封装,在开发中用户可以尽可能地用JFace组件来开发自己的应用。JFace程序和SWT程序类似,只不过JFace把常用的功能进行了提炼,使用户不必太关心SWT的一些细节。

(3)RCP(Rich Client Platform):
   本质上是Eclipse的插件,所以当开发RCP应用程序时,可以利用Eclipse平台UI外观和框架来快速地进行开发。例如创建一个菜单栏、工具栏。
   当程序员开发桌面的应用时,往往想摆脱对Eclipse IDE的依赖,而是希望使用最小的运行环境来运行系统。所以在Eclipse 3.0以后的版本中逐步地将插件的运行从Eclipse的运行平台中剥离出来,从而形成了RCP。脱离Eclipse平台独立运行,这样大大减少了打包程序后文件的体积,使系统更加小巧和雅观。

二、SWT特性及组件
(1)特性
   SWT是一个套库函数,它创建了Java 版的本地操作系统 GUI 控件。它依赖于本机实现,这意味着基于SWT的应用程序具有以下几个关键特性:
<1>它们的外观、行为和执行类似于“本机”应用程序。
<2>所提供的窗口小部件(Widget)反映了主机操作系统上提供的窗口小部件(组件和控件)。
<3>主机 GUI 库的任何特殊行为都在 SWT GUI 中得到反映。
   SWT 不同于 Java 技术的 Swing,Swing 的设计目标是消除操作系统的差异。SWT 库反映了主机操作系统的基本窗口小部件,JFace 库有助于向 SWT 应用程序中添加大量服务,SWT 最重要的扩展之一是将应用程序的数据模型与显示及更改它的 GUI 隔离开来。

(2)SWT中的基本组件
<1>Widget:基本的 SWT GUI 组件(类似于 Java AWT 中的 Component 和 Swing 中的 JComponent),Widget 是一个抽象类。
<2>Control:拥有操作系统的对等物的窗口小部件,Control 是一个抽象类。
<3>Composite:包含其他控件的控件(类似于 Java AWT 中的 Container 和 Swing 中的JPanel)。
<4>Item:其他控件包含的窗口小部件(该控件可能是复合控件),如列表和表。Item 是一个抽象类。
这些窗口组件(或小部件)被安排在继承层次结构中。其中Widget是底层的类。  

   为了避免命名冲突,定制控件的名称都是以“C”开始的(例如,比较 CLabel 与 Label)。

提示:创建一个组件通常有两个参数,第一个为父组件,第二个是组件的显示样式,例如:“Button button = new Button(shell, SWT.RADIO);”。

三、使用SWT Designer作为开发工具
    SWT Designer 是一种功能强大且容易使用的基于Eclipse SWT技术的图形用户界面设计工具,是一个很好的Eclipse的界面开发插件包。利用SWT Designer 的可视化界面,只需采用拖拉操作,就可以很快地在窗体上创建各种组件,设计出来的窗体和组件的外观和操作系统平台下其他软件的外观相似,具有本机系统的风格。
(1)下载
http://www.instantiations.com/windowbuilder/swtdesigner/download.html?id=2
(2)文档
http://download.instantiations.com/D2WBDoc/continuous/latest/docs/html/index.html
四、创建系统托盘
	/**
	 * 创建托盘
	 * @param shell
	 */
	private static void createSysTray(Shell shell){
		final int hWnd = shell.handle;       
        OS.SetWindowLong(hWnd, OS.GWL_EXSTYLE, OS.WS_EX_CAPTIONOKBTN);       
		final Tray tray = Display.getCurrent().getSystemTray();
		
		if(tray == null){
			return;
		}else{
			Display display = Display.getCurrent();
	        final Menu trayMenu = createTrayMenu(display, shell);       
	        final TrayItem item = new TrayItem(tray, SWT.NONE);       
	        item.setToolTipText("MyEditor");       
	        item.setImage(SWTResourceManager.getImage(MyEditor.class,
			"/app.ico"));
	        
	        Listener listener = new Listener() {       
	            public void handleEvent(Event event) {       
	                if (event.type == SWT.Show){
	                    System.out.println("显示");       
	                }else if (event.type == SWT.Hide){       
	                    System.out.println("隐藏");
	                }else if (event.type == SWT.Selection){       
	                    System.out.println("选中");
	                	Shell s = event.display.getShells()[0];       
	                    s.setVisible(true);       
	                    s.setMinimized(false); 
	                }else if (event.type == SWT.DefaultSelection){       
	                    System.out.println("默认选中");
	                	Shell s = event.display.getShells()[0];       
	                    s.setVisible(true);       
	                    s.setMinimized(false); 
	                }else if (event.type == SWT.MenuDetect){       
	                    trayMenu.setVisible(true);
	                }
	            }       
	        };       
	        item.addListener(SWT.Show, listener);       
	        item.addListener(SWT.Hide, listener);       
	        item.addListener(SWT.Selection, listener);       
	        item.addListener(SWT.DefaultSelection, listener);       
	        item.addListener(SWT.MenuDetect, listener);       

	        shell.addShellListener(new ShellListener() {       
	            public void shellDeactivated(ShellEvent e) {       
	            }       
	            public void shellActivated(ShellEvent e) {       
	            }       
	            public void shellClosed(ShellEvent e) {       
	            }       
	            public void shellDeiconified(ShellEvent e) {       
	            }       
	            public void shellIconified(ShellEvent e) {       
	                ((Shell) e.getSource()).setVisible(false);       
	            }       
	        }); 
		}
		
	}
	
	/**
	 * 创建托盘菜单
	 * @param display
	 * @param shell
	 * @return
	 */
    private static Menu createTrayMenu(final Display display, final Shell shell) {
    	Image image = SWTResourceManager.getImage(MyEditor.class,
		"/app.ico");
    	
        final Menu trayMenu = new Menu(shell, SWT.POP_UP);       
        MenuItem welcomeItem = new MenuItem(trayMenu, SWT.PUSH);       
        welcomeItem.setText("欢迎");       
        welcomeItem.setImage(image);       
        new MenuItem(trayMenu, SWT.SEPARATOR);       
        MenuItem updatetem = new MenuItem(trayMenu, SWT.PUSH);       
        updatetem.setText("在线更新");       
        MenuItem aboutItem = new MenuItem(trayMenu, SWT.PUSH);       
        aboutItem.setText("关于我们");       
        aboutItem.setImage(image);
        MenuItem exitItem = new MenuItem(trayMenu, SWT.PUSH);
        exitItem.setText("退出");
        exitItem.addSelectionListener(new SelectionListener(){
			@Override
			public void widgetDefaultSelected(SelectionEvent e) {
				shell.close();
			}
			@Override
			public void widgetSelected(SelectionEvent e) {
				shell.close();
			}
        });
        trayMenu.setDefaultItem(welcomeItem);       
        return trayMenu;       
    }
分享到:
评论
1 楼 wuyufeixue 2011-07-04  
         

相关推荐

    SWT_JFace.rar_ImageAnalyzer_SWT-jface_swt jface

    SWT (Standard Widget Toolkit) 和 JFace 是 Eclipse 开发框架中的两个重要组件,它们在创建图形用户界面(GUI)时发挥着关键作用。本项目"SWT_JFace.rar_ImageAnalyzer_SWT-jface_swt_jface"是围绕这些技术展开的一...

    全面介绍SWT-JFace

    5. **视图和编辑器**:在Eclipse IDE中,JFace用于创建可复用的视图和编辑器组件,这在构建插件或RCP(Rich Client Platform)应用时非常有用。 在"Oreilly.SWT.A.Developers.Notebook.Oct.2004.eBook-LiB.chm"这...

    SWT/JFace专题 --- SWT/JFace概述

    7. 视图(Views)和编辑器(Editors):在Eclipse RCP框架下,如何使用JFace创建可重用的视图和专业化的编辑器。 8. 事件处理:讲解如何注册和处理SWT和JFace事件,如SelectionEvent、FocusEvent等。 9. SWT和JFace...

    SWT/JFace 3.5 API (CHM)

    7. 进阶应用:SWT和JFace不仅适用于普通的桌面应用,也可以应用于RCP(Rich Client Platform)开发,构建功能强大的企业级应用程序。Eclipse RCP框架基于SWT和JFace,允许开发者构建自定义的工作台和插件系统。 ...

    SWT/Jface API 3.4

    10. **Integration with Eclipse RCP**:SWT 和 JFace 是 Eclipse Rich Client Platform (RCP) 的基础,因此它们支持插件体系结构,使得开发者能够构建可扩展的应用程序。 SWT-JFace-3.4-API-.chm 文件很可能是 SWT...

    swt/jface.jar

    标题中的"swt/jface.jar"是一个关键组件,它在Java开发环境中用于构建用户界面。SWT(Standard Widget Toolkit)是IBM开发的一个开源GUI库,它提供了与原生操作系统更紧密集成的图形用户界面控件。JFace是建立在SWT...

    Eclipse SWT JFace核心应用_pdf_含标签_目录

    《Eclipse SWT/Jface核心应用》全面介绍了SWT、JFace和RCP的相关知识。全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的...

    swt/jface api帮助文档

    9. **视图和编辑器**:在Eclipse RCP(Rich Client Platform)应用中,JFace提供了视图(View)和编辑器(Editor)的概念,它们是用户界面的主要组成部分。 10. **模型-视图-控制器(MVC)**:JFace鼓励使用MVC模式...

    Eclipse SWT/JFace 核心应用光盘源码

    Eclipse SWT(Standard Widget Toolkit)和JFace是Java开发中用于构建图形用户界面(GUI)的库,尤其在开发Eclipse插件和RCP(Rich Client Platform)应用程序时非常重要。这两个库提供了丰富的组件和框架,使得...

    swt&jface&rcp.chm.rar

    这个 CHM 文件很可能包含关于 SWT、JFace 和 RCP 的详细文档,包括教程、API 参考和示例代码。CHM 是一种 Windows 平台上常见的帮助文件格式,通常用于存放 HTML 文档和索引,方便用户快速查找和学习相关知识。这个...

    swt/jface in action +中文版+英文版+源码 下载

    9. 集成到Eclipse RCP:如果适用,可能会介绍如何将SWT和JFace技术应用于Eclipse Rich Client Platform(RCP)开发。 通过这本书的学习,开发者可以有效地提升使用SWT和JFace构建桌面应用程序的能力。源码的实践...

    SWT-resource address

    - **资源地址**:[http://www.eclipse.org/articles/Article-RCP-1/tutorial1.html](http://www.eclipse.org/articles/Article-RCP-1/tutorial1.html) - **知识点**: - 第一篇教程介绍了如何创建一个基本的...

    SWT/JFACE客户端登录窗口例子

    SWT (Standard Widget ...这个例子是一个学习 SWT 和 JFace 基础的好起点,特别是对于那些想要开发 Eclipse RCP 应用程序的人来说。通过这个例子,你可以理解如何结合使用这两个库来创建具有实际功能的界面组件。

    swt/jface实例开发

    【SWT/JFace实例开发】是一份针对Java GUI编程的学习资源,主要聚焦于SWT(Standard Widget Toolkit)和JFace这两个强大的图形用户界面库。SWT是Eclipse项目的一部分,它提供了一套与操作系统直接交互的原生控件,...

    初学SWT&JFace

    6. ** SWT/JFace与Eclipse插件开发**:结合Eclipse RCP(Rich Client Platform),SWT和JFace可以用来开发强大的桌面应用程序和Eclipse插件,利用Eclipse的强大功能如工作流、资源管理等。 7. **调试和优化**:理解...

    swt-3.7.2-win32-win32-x86-source.rar

    7. **与JFace和Eclipse RCP的集成**:SWT是Eclipse Rich Client Platform (RCP) 的基础,JFace则是在SWT之上提供更高层次的抽象,简化GUI开发。两者结合,开发者可以快速构建复杂的桌面应用程序。 源代码包"swt-...

    mysource-jface

    总之,"mysource-jface"项目是一个关于JFace技术的实践示例,通过研究该项目的源代码,开发者可以深入理解JFace的工作机制,提升在Eclipse RCP( Rich Client Platform)环境下的开发能力。对于想要提升Java GUI开发...

    eclipse swt/jface核心应用源码

    通过对这些源码的学习,开发者不仅可以深入了解SWT和JFace的工作原理,还能掌握如何利用它们高效地构建Eclipse RCP应用。这些源码实例通常包含丰富的注释,有助于理解各个组件的使用方式和最佳实践。

    SWT/JFace学习文档

    - SWT/JFace更适合构建复杂的IDE或RCP(Rich Client Platform)应用。 2. 构建 SWT/JFACE 应用程序 2.1 构建运行环境 要使用SWT/JFace,首先需要安装Java开发环境(JDK)和Eclipse IDE,然后通过Eclipse的插件系统...

    Eclipse SWT/JFace 书中 全部实例

    Eclipse SWT(Standard Widget Toolkit)和JFace是用于构建Java GUI应用程序的强大工具,它们与Eclipse IDE紧密集成,提供了一套丰富的控件和抽象层,使得开发者能够创建出功能丰富的桌面应用。本压缩包包含的"全部...

Global site tag (gtag.js) - Google Analytics