- 浏览: 514873 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
devon.k:
推荐的一种解决方案:https://developer.jbo ...
JBoss应用遇到问题记录 -
liuzl121:
楼主你好,我遇到了你说的第一个问题,能不能详细一些?
JBoss应用遇到问题记录 -
showzh:
...
MySQL5.1列类型 -
zijie110:
...
使用SpringSide的PropertyFilter无法实现 where 属性名1 like '%值1%' or 属性名1 like '%值2%' 的效果 -
JAVA-JVM:
您好,我看了您的一篇文章“用Maven构建Flex4项目实践记 ...
用Maven构建Flex4项目实践记录
----------------------------------------------------------------------------------------------------
学习: http://www.blogjava.net/youxia/archive/2006/12/01/84855.html
----------------------------------------------------------------------------------------------------
1. 新建视图 CanvasView:
package hellorcp.canvas; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.part.ViewPart; public class CanvasView extends ViewPart { public Canvas canvas; @Override public void createPartControl(Composite parent) { // TODO 自动生成方法存根 canvas = new Canvas(parent, SWT.NONE); } @Override public void setFocus() { // TODO 自动生成方法存根 } }
2. 绘制椭圆菜单 DrawOvalAction:
package hellorcp.canvas; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.graphics.GC; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; public class DrawOvalAction implements IWorkbenchWindowActionDelegate { IWorkbenchWindow window; public void dispose() { // TODO Auto-generated method stub } public void init(IWorkbenchWindow arg0) { this.window = arg0; } public void run(IAction arg0) { IViewReference[] vfs = window.getActivePage().getViewReferences(); IViewPart vw; for (int i = 0; i < vfs.length; i++) { vw = vfs[i].getView(false); if (vw.getTitle().equals("画图板")) { GC gc = new GC(((CanvasView) vw).canvas); gc.drawOval(80, 50, 100, 100); gc.dispose(); } } } public void selectionChanged(IAction arg0, ISelection arg1) { // TODO Auto-generated method stub } }
3. 修改 Perspective.java 如下:
package hellorcp; import org.eclipse.ui.IPageLayout; import org.eclipse.ui.IPerspectiveFactory; public class Perspective implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { // FirstView String editorArea = layout.getEditorArea(); // layout.addView("hellorcp.view.FirstView", IPageLayout.RIGHT, 0.2f, // editorArea); // SecondView // layout.setEditorAreaVisible(false); // layout.addView("hellorcp.view.SecondView", IPageLayout.RIGHT, 0.5f, // editorArea); // OleView // layout.addView("hellorcp.ole.OleView", IPageLayout.RIGHT, 0.5f, // editorArea); // CanvasView layout.addView("hellorcp.canvas.CanvasView", IPageLayout.RIGHT, 0.5f, editorArea); } }
4. 配置 plugin.xml, 片段如下:
1) action:
<action class ="hellorcp.canvas.DrawOvalAction" icon ="icons/alt_window_16.gif" id ="hellorcp.canvas.DrawOvalAction" label ="绘制椭圆" menubarPath ="hellorcp.firstmenu/additions" style ="push" toolbarPath ="additions" tooltip ="绘制椭圆" />
2) view:
<view class="hellorcp.canvas.CanvasView" id="hellorcp.canvas.CanvasView" name="画图板" />
5. 保存,运行,效果如下:
6. 绘制矩形、渐变矩形、图片:
1) 矩形action:
package hellorcp.canvas; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.graphics.GC; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; public class DrawRectAction implements IWorkbenchWindowActionDelegate { IWorkbenchWindow window; public void dispose() { // TODO Auto-generated method stub } public void init(IWorkbenchWindow arg0) { this.window = arg0; } public void run(IAction arg0) { IViewReference[] vfs = window.getActivePage().getViewReferences(); IViewPart vw; for (int i = 0; i < vfs.length; i++) { vw = vfs[i].getView(false); if (vw.getTitle().equals("画图板")) { GC gc = new GC(((CanvasView) vw).canvas); gc.drawRectangle(280, 50, 100, 100); gc.dispose(); } } } public void selectionChanged(IAction arg0, ISelection arg1) { // TODO Auto-generated method stub } }
2) 渐变矩形action:
package hellorcp.canvas; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.GC; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; public class DrawGradientAction implements IWorkbenchWindowActionDelegate { IWorkbenchWindow window; public void dispose() { // TODO Auto-generated method stub } public void init(IWorkbenchWindow arg0) { this.window = arg0; } public void run(IAction arg0) { IViewReference[] vfs = window.getActivePage().getViewReferences(); IViewPart vw; for (int i = 0; i < vfs.length; i++) { vw = vfs[i].getView(false); if (vw.getTitle().equals("画图板")) { GC gc = new GC(((CanvasView) vw).canvas); gc.setBackground(window.getShell().getDisplay().getSystemColor( SWT.COLOR_BLUE)); gc.fillGradientRectangle(80, 200, 100, 100, false); gc.dispose(); } } } public void selectionChanged(IAction arg0, ISelection arg1) { // TODO Auto-generated method stub } }
3) 图片action:
package hellorcp.canvas; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; public class DrawImageAction implements IWorkbenchWindowActionDelegate { IWorkbenchWindow window; public void dispose() { // TODO Auto-generated method stub } public void init(IWorkbenchWindow arg0) { this.window = arg0; } public void run(IAction arg0) { IViewReference[] vfs = window.getActivePage().getViewReferences(); IViewPart vw; for (int i = 0; i < vfs.length; i++) { vw = vfs[i].getView(false); if (vw.getTitle().equals("画图板")) { GC gc = new GC(((CanvasView) vw).canvas); Image img = new Image(window.getShell().getDisplay(), "E:\\develop\\RCP\\HelloRCP\\splash.bmp"); gc.drawImage(img, 280, 200); gc.dispose(); } } } public void selectionChanged(IAction arg0, ISelection arg1) { // TODO Auto-generated method stub } }
4) action配置:
<action class ="hellorcp.canvas.DrawRectAction" icon ="icons/alt_window_16.gif" id ="hellorcp.canvas.DrawRectAction" label ="绘制矩形" menubarPath ="hellorcp.firstmenu/additions" style ="push" toolbarPath ="additions" tooltip ="绘制矩形" /> <action class ="hellorcp.canvas.DrawGradientAction" icon ="icons/alt_window_16.gif" id ="hellorcp.canvas.DrawGradientAction" label ="绘制渐变矩形" menubarPath ="hellorcp.firstmenu/additions" style ="push" toolbarPath ="additions" tooltip ="绘制渐变矩形" /> <action class ="hellorcp.canvas.DrawImageAction" icon ="icons/alt_window_16.gif" id ="hellorcp.canvas.DrawImageAction" label ="绘制图片" menubarPath ="hellorcp.firstmenu/additions" style ="push" toolbarPath ="additions" tooltip ="绘制图片" />
5) 保存,运行,效果如下:
7. 添加Paint事件的监听器(解决窗口最小化或者被别的窗口遮挡后,图形就会消失的问题),修改后的 CanvasView:
package hellorcp.canvas; import org.eclipse.swt.SWT; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; public class CanvasView extends ViewPart { public Canvas canvas; @Override public void createPartControl(Composite parent) { // TODO 自动生成方法存根 canvas = new Canvas(parent, SWT.NONE); // 增加Paint监听器,避免窗口变化后绘图消失 canvas.addPaintListener(new PaintListener() { public void paintControl(PaintEvent e) { // 画椭圆 e.gc.drawOval(80, 50, 100, 100); // 画矩形 e.gc.drawRectangle(280, 50, 100, 100); // 画渐变矩形 e.gc.setBackground(PlatformUI.getWorkbench().getDisplay() .getSystemColor(SWT.COLOR_BLUE)); e.gc.fillGradientRectangle(80, 200, 100, 100, false); // 画图形 Image img = new Image(PlatformUI.getWorkbench().getDisplay(), "E:\\develop\\RCP\\HelloRCP\\splash.bmp"); e.gc.drawImage(img, 280, 200); } }); } @Override public void setFocus() { // TODO 自动生成方法存根 } }
发表评论
-
Eclipse RCP开发记要
2012-07-05 20:21 1381Eclipse RCP开发学习——一些基础概念 Ec ... -
《Eclipse插件开发学习笔记》要点摘记
2010-08-28 18:40 1282一、Chapter 3. SWT编程基础 1. 开发多 ... -
实用的SWT代码片段收集记录
2010-07-01 18:54 12681. 窗体相对屏幕居中 shell.setLocation( ... -
SWT开发入门学习笔记——01.Hello SWT
2010-06-19 23:36 1698创建一个典型的 SWT 应 ... -
Eclipse RCP开发学习——学习资源收集
2010-03-12 11:15 1552某位达人的学习整理,很好: 简单RCP框架源码分析 R ... -
GUI开发之AWT、Swing、SWT和JFace的比较
2010-03-12 10:46 1503------------------------------- ... -
Eclipse RCP开发学习——一些基础概念
2010-03-12 10:07 1484------------------------------- ... -
Eclipse RCP开发插件—— Visual Editor安装
2010-03-10 11:15 6708------------------------------- ... -
Eclipse RCP插件使用记录索引
2010-03-10 11:03 1582------------------------------- ... -
Eclipse RCP开发入门学习笔记——07.小结
2010-03-02 13:52 1505跟着“海边沫沫”的系列文章进行了入门学习,对RCP的开发有了个 ... -
Eclipse RCP开发入门学习笔记——06.OpenGL
2010-03-02 13:18 2197------------------------------- ... -
Eclipse RCP开发入门学习笔记——04.在Windows中使用Active X控件
2010-03-02 09:47 1736------------------------------- ... -
Eclipse RCP开发入门学习笔记——03.视图
2010-03-02 09:08 2383------------------------------- ... -
Eclipse RCP开发入门学习笔记——02.菜单和对话框
2010-03-01 14:58 2789------------------------------- ... -
Eclipse RCP开发入门学习笔记——01.Hello RCP
2010-02-26 15:00 4376最近急于想要了解桌面客户端开发的方方面面,除了在刚踏入工作岗位 ...
相关推荐
在提供的压缩包中,包含了关于Eclipse RCP插件开发15至24章的学习笔记,这些章节覆盖了多个关键主题,下面将对这些主题进行详细解读。 1. **第15章:对话框和向导(Dialogs and Wizards)** - 在Eclipse RCP中,...
### Eclipse RCP 开发入门详解 #### 一、Eclipse RCP 概述 Eclipse Rich Client Platform (RCP) 是一种基于Java的框架和技术集合,用于构建具有丰富用户体验的应用程序。Eclipse RCP 提供了一种灵活的方式来构建...
如果您已经具备了这些基础知识,那么学习Eclipse RCP插件式开发将变得非常容易。 学习Eclipse RCP插件式开发的难点可能在于: 1. Eclipse RCP的学习曲线较陡,需要一定的Java基础和Eclipse基础知识。 2. RCP插件式...
网络中最全面最合适学习或开发...包含eclipse rcp开发入门教程; eclipse rcp基础教程;eclipse rcp开发自学教程; eclipse rcp开发培训教程及ppt等相关资料;教程中包含一步步操作实例,包含对开发原理的讲解与说明;
"使用Eclipse RCP进行桌面程序开发(五):2D绘图.doc"涵盖了在RCP应用中进行2D图形绘制的技术,这可能涉及到使用SWT(Standard Widget Toolkit)和JFace库提供的绘图API,创建自定义的图表或者可视化效果。...
以下是对Eclipse RCP插件开发学习笔记1-14章的详细知识点解析: 1. **第1章 Eclipse平台简介**: - Eclipse平台是基于OSGi(Open Service Gateway Initiative)标准的,提供了插件模型,使得开发者可以构建、运行...
在"eclipse rcp应用系统开发方法与实战源代码.zip"中,我们可以学习到以下关键知识点: 1. **Eclipse RCP架构**:理解Eclipse RCP的基础架构非常重要,包括插件(Plugins)、工作台(Workbench)、视图(Views)、...
### 通过例子学习Eclipse RCP开发 #### Eclipse RCP概览 Eclipse RCP(Rich Client Platform,富客户端平台)是一种基于Java的框架和技术集合,用于构建具有丰富用户界面的应用程序。它允许开发者创建高度可定制且...
Eclipse RCP 开发资料打包下载 目录如下: RCP程序设计.pdf(推荐) Addison.Wesley.Eclipse.Rich.Client.Platform.Designing.Coding.and.Packaging.Java.Applications.Oct.2005.chm Eclipse+RCP入门.pdf example_...
### Eclipse RCP 入门详解 #### 一、Eclipse RCP 概述 **Eclipse RCP**(Rich Client Platform)是一种构建丰富客户端应用程序的框架,它利用Eclipse平台的强大功能来创建高度定制化的桌面应用程序。通过RCP,...
**Eclipse RCP 开发教程** Eclipse Rich Client Platform (RCP) 是一个用于构建桌面应用程序的框架,它基于 Eclipse IDE 平台,允许开发者利用 Eclipse 的强大功能和丰富的插件系统来创建自定义的、可扩展的应用...
Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用...通过深入学习"**Eclipse RCP开发详解**",你可以掌握构建自定义插件的技巧,从而充分利用这个平台的优势,打造出满足特定需求的应用程序。
《ECLIPSE+RCP应用系统开发方法与实战》这本书是高岗先生关于使用Eclipse RCP(Rich Client Platform)进行应用系统开发的一本实战指南。Eclipse RCP是Eclipse IDE的一部分,它提供了一个框架,使得开发者可以构建...
Eclipse RCP(Rich Client Platform)是基于Java的开发框架,用于构建桌面应用程序。它提供了构建用户界面所需的各种组件和工具,允许开发者创建功能丰富的、交互式的应用程序。Eclipse RCP利用Eclipse IDE的强大...
#### Eclipse RCP Plugin 开发快速入门 Eclipse RCP(Rich Client Platform)插件开发是构建基于Eclipse框架的应用程序的核心技术之一。本指南旨在帮助开发者从零开始掌握Eclipse RCP插件开发的基础知识及实战技巧...
### Eclipse RCP 入门示例介绍 #### 一、Eclipse 概述 Eclipse 是一款由 IBM 开发并贡献给开源社区的集成开发环境(Integrated Development Environment, IDE),自发布以来,迅速成为了最受欢迎的 Java 开发工具...
这本书《Eclipse RCP系统开发与实战》显然是针对想要学习和掌握Eclipse RCP技术的程序员,通过实战案例帮助读者深入理解Eclipse RCP的开发过程。 1. **Eclipse RCP基础知识** - Eclipse RCP是一种基于Java的开发...
Eclipse RCP(Rich Client Platform)简要入门手册旨在为开发者提供使用RCP进行插件开发的基础指导。该手册适合中级水平的软件工程师,特别是对于那些希望利用Eclipse平台构建丰富客户端应用程序的开发者来说尤为...
总的来说,"Eclipse RCP 初级入门教程"是一个很好的起点,为初学者提供了RCP开发的基本概念和步骤。通过这个教程,你可以逐步熟悉Eclipse RCP的开发环境,创建你的第一个RCP应用,并了解其强大的模块化和扩展能力。...