- 浏览: 499460 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
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 1338Eclipse RCP开发学习——一些基础概念 Ec ... -
《Eclipse插件开发学习笔记》要点摘记
2010-08-28 18:40 1216一、Chapter 3. SWT编程基础 1. 开发多 ... -
实用的SWT代码片段收集记录
2010-07-01 18:54 12201. 窗体相对屏幕居中 shell.setLocation( ... -
SWT开发入门学习笔记——01.Hello SWT
2010-06-19 23:36 1652创建一个典型的 SWT 应 ... -
Eclipse RCP开发学习——学习资源收集
2010-03-12 11:15 1476某位达人的学习整理,很好: 简单RCP框架源码分析 R ... -
GUI开发之AWT、Swing、SWT和JFace的比较
2010-03-12 10:46 1457------------------------------- ... -
Eclipse RCP开发学习——一些基础概念
2010-03-12 10:07 1440------------------------------- ... -
Eclipse RCP开发插件—— Visual Editor安装
2010-03-10 11:15 6641------------------------------- ... -
Eclipse RCP插件使用记录索引
2010-03-10 11:03 1526------------------------------- ... -
Eclipse RCP开发入门学习笔记——07.小结
2010-03-02 13:52 1482跟着“海边沫沫”的系列文章进行了入门学习,对RCP的开发有了个 ... -
Eclipse RCP开发入门学习笔记——06.OpenGL
2010-03-02 13:18 2161------------------------------- ... -
Eclipse RCP开发入门学习笔记——04.在Windows中使用Active X控件
2010-03-02 09:47 1686------------------------------- ... -
Eclipse RCP开发入门学习笔记——03.视图
2010-03-02 09:08 2304------------------------------- ... -
Eclipse RCP开发入门学习笔记——02.菜单和对话框
2010-03-01 14:58 2745------------------------------- ... -
Eclipse RCP开发入门学习笔记——01.Hello RCP
2010-02-26 15:00 4327最近急于想要了解桌面客户端开发的方方面面,除了在刚踏入工作岗位 ...
相关推荐
eclipse rcp 插件开发学习笔记.pdf 15-24章
eclipse rcp 插件开发学习笔记.pdf 1-14章
Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT
一个 Eclipse RCP 的入门教程
网络中最全面最合适学习或开发...包含eclipse rcp开发入门教程; eclipse rcp基础教程;eclipse rcp开发自学教程; eclipse rcp开发培训教程及ppt等相关资料;教程中包含一步步操作实例,包含对开发原理的讲解与说明;
通过例子学习EclipseRCP开发通过例子学习EclipseRCP开发
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入门,初级的RCP开发介绍。
Eclipse RCP允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序,可重用Eclipse中已存在的方法和编码模式。俗话说,万事开头难。Eclipse RCP入手可能会比较困难、费时。接下来我们将主要讲述如何让RCP工作. ...
前一段时间学习eclipse rcp开发写的一个学习用的工程。涉及了我当时学到的一些方面。 当时想找一个可以用来学习的简单的源代码真难,有的都是复杂的。 这里提供一个简单的工程。设计初学者接触的各种问题。有时通一...
eclipse rcp开发插件详解,快速开发eclipse插件,资源很好
学习Eclipse RCP开发的一个教程。word文件格式的。本人从IBM官方网站上下载的。在这里打个包一起发给大家,方便学习!
eclipse rcp应用系统开发方法与实战源代码.zip
高级篇(第6-12章)系统讲解了Eclipse RCP应用开发的基础知识、Eclipse RCP软件产品各个组成部分的构建方法,以及Eclipse RCP扩展的使用和扩展点的开发,掌握这些技术知识的读者将能构建一个结构完整的Eclipse RCP...
通过例子学习Eclipse RCP开发 通过例子学习Eclipse RCP开发 swt 插件开发技术文档
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
eclipse rcp 简要入门手册,是使用RCP进行插件开发的入门级手册
eclipse rcp 开发基础教程 入门级别
eclipse中rcp开发入门