`
djsl6071
  • 浏览: 579239 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Eclipse RCP开发桌面程序

阅读更多

拥抱Eclipse RCP

     摘要: 我相信,在未来的几年里,Eclipse RCP一定会变得非常流行。  阅读全文

posted @ 2006-12-09 10:48 海边沫沫 阅读(2346) | 评论 (10)  编辑 |

     摘要: 我相信,在未来的几年里,Eclipse RCP一定会变得非常流行。  阅读全文

posted @ 2006-12-01 15:33 海边沫沫 阅读(2028) | 评论 (5)  编辑 |

     摘要: 我相信,在未来的几年里,Eclipse RCP一定会变得非常流行。  阅读全文

posted @ 2006-11-28 12:24 海边沫沫 阅读(2863) | 评论 (1)  编辑 |

     摘要: 我相信,在未来的几年里,Eclipse RCP一定会变得非常流行。  阅读全文

posted @ 2006-11-24 22:02 海边沫沫 阅读(3957) | 评论 (18)  编辑 |

     摘要: 我相信,在未来的几年里,Eclipse RCP一定会变得非常流行。  阅读全文

posted @ 2006-11-20 22:04 海边沫沫 阅读(3933) | 评论 (9)  编辑 |

     摘要:   所谓RCP,就是Rich Client Platform的缩写,即富客户平台,是Eclipse进化的产物(自3.0版以后出现),是Eclipse组织向用户提供的强大的开放性开发平台,能够使用户方便地创建自己的基于Eclipse的应用程序,并且这些应用程序能够得到Eclipse的底层支持。更重要的是,我们可以利用Java创建象Eclipse这么漂亮的桌面程序。

  我相信,在未来的几年里,RCP一定会变得非常流行。使用RCP,我们可以开发界面象Eclipse这样漂亮的桌面程序,比如医院管理系统啊、CAD软件等等。遗憾的是,目前在国内基本上找不到关于RCP的中文资料,我们只能通过自己的探索来为我们的程序添加我们想要的功能。  阅读全文

posted @ 2006-11-17 21:41 海边沫沫 阅读(3459) | 评论 (17)  编辑 |

正文全部:

 

所谓RCP,就是Rich Client Platform的缩写,即富客户平台,是Eclipse进化的产物(自3.0版以后出现),是Eclipse组织向用户提供的强大的开放性开发平台,能够使用户方便地创建自己的基于Eclipse的应用程序,并且这些应用程序能够得到Eclipse的底层支持。更重要的是,我们可以利用Java创建象Eclipse这么漂亮的桌面程序。

  我相信,在未来的几年里,RCP一定会变得非常流行。使用RCP,我们可以开发界面象Eclipse这样漂亮的桌面程序,比如医院管理系统啊、CAD软件等等。遗憾的是,目前在国内基本上找不到关于RCP的中文资料,我们只能通过自己的探索来为我们的程序添加我们想要的功能。

  下面让我们一步一步来建立一个Eclipse RCP程序,下面的内容可以说在Google上一搜一大把,有些人会觉得乏味,但是没关系,这只是一个快速的起步。

  选择“新建--项目”,选择“插件项目”:
rcp00.JPG

rcp01.JPG

点下一步,输入项目名称,选择Eclipse版本,我这里选择的是3.2:
rcp02.JPG

  点下一步,插件标识和插件名称可以更改,其他的内容都可以保持默认,一定要记得选中富客户机应用程序支持:
rcp03.JPG

  点下一步,选中一个模板,这里选一个最简单的,到时候看源代码的时候便于理解:
rcp04.JPG

  点下一步,改一下应用程序标题:
rcp05.JPG

  点完成,我们可以在项目上面点右键,选择按Eclipse程序运行,就可以看到效果了:
rcp16.JPG

rcp17.JPG

  在这个程序中,窗口上显示的是一个透视图,透视图中含有一个编辑器区域,以后,我们可以逐步为这个程序添加菜单、工具条和为这个透视图添加视图、编辑器等等。

  现在,这个程序只能在Eclipse环境下运行,而RCP的目标是创建可以独立运行的应用程序,我们的事情还没完呢。下一步,在项目上点右键,创建产品配置文件:
rcp06.JPG

  输入产品配置文件名:

rcp07.JPG

  生成的产品配置文件在编辑器中打开,应该是这个样子的:
rcp09.JPG

  刚开始,上面的几个文本框都是空的,点新建按钮之后,弹出如下的对话框,输入产品名称后,点完成就行了。

rcp08.JPG

  点击配置文件中的“启动程序”,我们可以试着启动我们的RCP程序。结果呢,会出错。原因很简单,因为我们没有为我们的程序选中它依赖的插件。

   选中配置文件的“配置”选项卡,添加以下几个依赖项,记住,一定要把我们自己,也就是com.blogjava.youxia.rcp_start加进依赖项,否则会出错。最开始的时候,就是这么一点小问题,让我浪费了几天时间。
rcp10.JPG

  再点击添加必须的插件,自动添加其它的依赖项。

  再下一步,设置项目的构建路径,如下图:
rcp11.JPG

  下一步,导出我们的程序:
rcp12.JPG

rcp13.JPG

  点下一步,输入我们程序导出的目录,如下图:
rcp14.JPG

  点完成按钮之后,我们的程序就导出到我们的指定的目录中了,打开这个目录,可以看到一个类似eclipse的程序图标,双击运行,效果如下图:rcp15.JPG

  最后,需要说明两点:第一,如果希望生成的程序有自己的图标,可以在产品配置文件中的最后两个配置文件中设置;第二,生成的程序应该是没有菜单栏的,因为我的Eclipse安装了MyEclipse,所以导出的程序就多了两个菜单。

  好了,快速起步就到这里了,以后再仔细研究生成的代码和为我们的程序添加功能。
=========================================================================
使用Eclipse RCP进行桌面程序开发(一):快速起步中,我们通过Eclipse的插件开发向导,逐步建立了一个RCP应用程序,但是,这个程序没有任何功能,难以激起我们学习的兴趣。在这一节,我们将一起探索怎样在程序中添加菜单和工具条。先看一下成果:

图一、图二:带有菜单和工具条的RCP程序
rcp18.JPG

rcp19.JPG

图三:工具栏上的按钮的提示文本
rcp20.JPG

图四:点击菜单项或者工具栏按钮后,弹出一个简单的对话框。
rcp21.JPG

这里需要说明一点,为什么要在讲菜单和工具栏的时候一起讲对话框,这是因为对话框是我们所能想到的最简单最直接的用户交互方式,在对话框上可以添加各种各样的控件来实现复杂的功能,为了让我们点击菜单项的时候能够看到效果,这里就用了一个简单的对话框。当然,当我们以后接触到视图、编辑器和透视图这样的概念之后,我们能使用的用户交互方式就不仅仅只是对话框了。

打开我们上一节使用向导建立的工程,可以发现工程下面自动生成了如下文件:
Application.java
ApplicationWorkbenchAdvisor.java
ApplicationWorkbenchWindowAdvisor.java
ApplicationActionBarAdvisor.java
Perspective.java
plugin.xml
这里的Application.java是我们整个程序的入口点,我们的程序运行的时候,会先执行Application的run方法,run方法的代码如下:

 1 public  Object run(Object args)  throws  Exception  {
 2         Display display  =  PlatformUI.createDisplay();
 3          try   {
 4              int  returnCode  =  PlatformUI.createAndRunWorkbench(display,  new  ApplicationWorkbenchAdvisor());
 5              if  (returnCode  ==  PlatformUI.RETURN_RESTART)  {
 6                  return  IPlatformRunnable.EXIT_RESTART;
 7             }

 8              return  IPlatformRunnable.EXIT_OK;
 9         }
  finally   {
10             display.dispose();
11         }

12     }

在第4行我们可以看出,该入口函数将创建用户界面的工作交给了ApplicationWorkbenchAdvisor类。接着,我们打开ApplicationWorkbenchAdvisor.java,代码如下:

 1 public   class  ApplicationWorkbenchAdvisor  extends  WorkbenchAdvisor  {
 2
 3      private   static   final  String PERSPECTIVE_ID  =   " cn.blogjava.youxia.rcp_start.perspective " ;
 4
 5      public  WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer)  {
 6          return   new  ApplicationWorkbenchWindowAdvisor(configurer);
 7     }

 8
 9      public  String getInitialWindowPerspectiveId()  {
10          return  PERSPECTIVE_ID;
11     }

12 }

可以看出,这个类的工作就是为我们的程序指定默认的透视图,然后把创建窗口的工作交给了ApplicationWorkbenchWindowAdvisor类。接着,我们打开ApplicationWorkbenchWindowAdvisor.java文件,看到代码如下:

 1 public   class  ApplicationWorkbenchWindowAdvisor  extends  WorkbenchWindowAdvisor  {
 2
 3      public  ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer)  {
 4          super (configurer);
 5     }

 6
 7      public  ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer)  {
 8          return   new  ApplicationActionBarAdvisor(configurer);
 9     }

10     
11      public   void  preWindowOpen()  {
12         IWorkbenchWindowConfigurer configurer  =  getWindowConfigurer();
13         configurer.setInitialSize( new  Point( 600 450 ));
14         configurer.setShowCoolBar( true );
15         configurer.setShowStatusLine( false );
16         configurer.setTitle( " 第一个RCP程序 " );
17         
18     }

19        
20 }

这个类的功能很强大,我们可以重载它的preWindowCreate、postWindowCreate、preWindowOpen、postWindowOpen等方法,以便修改我们窗口的外观。在这里可以看出,我们重载了preWindowOpen方法来设置窗口的大小和让工具栏可见。很显然,这个类的另外一个功能,就是把创建菜单和工具栏的任务交给了ApplicationActionBarAdvisor类。

到这里,谜底已经揭晓,要创建我们自己的菜单和工具条,就一定是在ApplicationActionBarAdvisor.java中做文章了。不错,打开这个文件,我们可以看到这个类有两个重要的方法:
protected void makeActions(IWorkbenchWindow window);
protected void fillMenuBar(IMenuManager menuBar);
我们可以在makeActions方法中创建我们的Action,什么是Action呢?Action是jface中的一个概念,在jface中通过org.eclipse.jface.action中的Action和ActionContributionItem类实现了视图和处理代码的分离,这样无论何时用户触发了一个控件的事件,都会激活一个相应的Action类实例来进行时间处理。毫无疑问,我们的菜单项是一个Action类的子类了。

下面请看ApplicationActionBarAdvisor.java的源代码:

 1 package  cn.blogjava.youxia.rcp_start;
 2
 3 import  org.eclipse.jface.action.IMenuManager;
 4 import  org.eclipse.jface.action.MenuManager;
 5 import  org.eclipse.ui.IWorkbenchWindow;
 6 import  org.eclipse.ui.application.ActionBarAdvisor;
 7 import  org.eclipse.ui.application.IActionBarConfigurer;
 8 import  org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
 9 import  cn.blogjava.youxia.actions.Action1;
10
11 public   class  ApplicationActionBarAdvisor  extends  ActionBarAdvisor  {
12     
13      private  IWorkbenchAction action1;
14
15      public  ApplicationActionBarAdvisor(IActionBarConfigurer configurer)  {
16          super (configurer);
17     }

18
19      protected   void  makeActions(IWorkbenchWindow window)  {
20         action1  =   new  Action1(window);
21         action1.setText( " 第一个菜单项 " );
22         action1.setId( " cn.blogjava.youxia.actions.action1 " );
23         register(action1);
24     }

25
26      protected   void  fillMenuBar(IMenuManager menuBar)  {
27         MenuManager newMenu  =   new  MenuManager( " 第一个菜单 " , " cn.blogjava.youxia.firstmenu " );
28         menuBar.add(newMenu);
29         newMenu.add(action1);
30     }

31    
32 }

可以看出,我们通过创建cn.blogjava.youxia.actions.Action1类的实例来创建一个菜单项,然后把它加入到菜单newMenu中,然后再把newMenu加入menuBar中,整个过程很容易理解。那么register(action1)是做什么的呢?这是为了把我们的Action的实例注册到工作台中,这样当我们的工作台销毁的时候,我们的Action也可以被销毁。

下面请看Action1类的源代码:

 1 package  cn.blogjava.youxia.actions;
 2
 3 import  org.eclipse.jface.action.Action;
 4 import  org.eclipse.ui.IWorkbenchWindow;
 5 import  org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
 6 import  cn.blogjava.youxia.rcp_start.FirstDialog;
 7
 8
 9 public   class  Action1  extends  Action  implements  IWorkbenchAction  {
10     
11      private  IWorkbenchWindow workbenchWindow;
12
13     
分享到:
评论

相关推荐

    eclipse 开发桌面程序

    利用SWT技术,基于WindowBuilder Eclipse 插件开发 桌面应用小程序详细步骤

    使用EclipseRCP进行桌面程序开发(一):快速起步

    火龙果软件工程技术中心 所谓RCP,就是...使用RCP,我们可以开发界面象Eclipse这样漂亮的桌面程序,比如医院管理系统啊、CAD软件等等。遗憾的是,目前在国内基本上找不到关于RCP的中文资料,我们只能通过自

    Eclipse Rcp 桌面程序开发

    Eclipse Rcp 桌面程序开发中文教程

    eclipse icons,用来开发rcp桌面应用程序

    eclipse icons,用来开发rcp桌面应用程序

    使用EclipseRCP进行桌面程序开发(二):菜单、工具栏和对话框

    火龙果软件工程技术中心 在使用EclipseRCP进行桌面程序开发(一):快速起步中,我们通过Eclipse的插件开发向导,逐步建立了一个RCP应用程序,但是,这个程序没有任何功能,难以激起我们学习的兴趣。在这一节,我们...

    Eclipse RCP Plugin 开发自学入门指南(CEC首发)

    Eclipse RCP 允许开发者使用 eclipse结构风格设计弹性的可扩展的应用程序,可重用Eclipse中 已存在的方法和编码模式。俗话说,万事开头难。Eclipse RCP 入手可能会比较困难、费时。接下 来我们将主要讲述如何让RCP ...

    使用EclipseRCP进行桌面程序开发(三):视图和透视图

    火龙果软件工程技术中心 EclipseRCP开发中,和用户进行交互最多的界面,应该是视图了,而透视图就是将已有的视图、菜单、工具栏、编辑器等等进行组合和布局。看完这一节,我们就可以建立如下图这样的程序界面了。...

    使用EclipseRCP进行桌面程序开发(四):在Windows中使用ActiveX控件

    看完这篇文章,可以开发如下的界面:没有嵌入ActiveX控件的...使用Windows系统中丰富的ActiveX控件资源,我们可以实现功能非常强大的程序。在Windows平台下,SWT图形工具包提供了对OLE的支持,ActiveX控件和OLE文档都

    [Eclipse.RCP深入浅出].Jeff.McAffer等.扫描版[目录].pdf

    《Eclipse RCP深入浅出》内容简介:Eclipse不只是一个单纯的流行IDE,其Rich Client Platform(RCP)插件几乎是所有桌面应用程序的坚实基础,从聊天应用程序到前端的企业级应用程序,不一而足。《Eclipse RCP深入浅...

    使用EclipseRCP进行桌面程序开发(五):2D绘图

    看完这篇文章,可以实现如下界面:当我第一次看到RCP的时候,我就梦想着有一天能够用它开发界面华丽的2D和3D程序,经历过前面的探索,今天终于可以揭开2D绘图的神秘面纱。在包资源管理器的插件依赖项中,我们一眼就...

    eclipse.rcp应用系统开发方法与实战(含源码)

    内附有一个高校收费分析系统实例源码,用hibernate 与rcp结合使用,对初学者来说很实用的,特别是想了解如何在桌面程序使用jface,swt并与hibernate结合处理数据库使用方面很到位。

    使用Eclipse 进行桌面程序开发

    所谓RCP,就是Rich Client Platform的缩写,即富客户平台,是Eclipse进化的产物(自3.0版以后出现),是Eclipse组织向用户提供的强大的开放性开发...更重要的是,我们可以利用Java创建象Eclipse这么漂亮的桌面程序。

    Java RCP程序设计

    富客户端(RCP)这个词早在上个世纪90 年代初,人们还在利用VB,dephin 开发桌 面应用程序的时候就已经出现了。随着桌面应用程序数量不断增长,各种各样的应用程序孕 育而生,小到Windows 自带的扫雷游戏,大到企业...

    RCP开发压缩包

    使用Eclipse 插件开发,能够快速的开发JAVA桌面应用程序,使其更简单,高效,快捷。

    SWTJFace开发入门指南

    使用RCP,我们可以开发界面象Eclipse这样漂亮的桌面程序,比如医院管理系统啊、CAD软件等等。遗憾的是,目前在国内基本上找不到关于RCP的中文资料,我们只能通过自己的探索来为我们的程序添加我们想要的功能

    udig-platform:uDig父项目包含所有核心组件。 在社区存储库中可以找到更多插件

    用户友好型桌面Internet GIS (uDig)是一个开源( + )桌面应用程序框架,它使用Eclipse Rich Client( RCP )技术构建。 uDig可用作独立应用程序 uDig可以使用RCP “插件”扩展 uDig可以用作现有RCP应用程序中的...

    JIDE Desktop Application Framework(桌面应用框架) 开发员技术手册

    所有这些都让JDAF成为最强大最易用的桌面应用程序开发平台。 主要功能 "Managed Desktop Application" - facilitates the entire application lifecycle OS Guidelines-driven Application UI - Supports Java ...

Global site tag (gtag.js) - Google Analytics