`
guhanjie
  • 浏览: 300686 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

GEF中组合按键设置汇总以及org.eclipse.gef.KeyStroke的方法的使用

    博客分类:
  • GEF
阅读更多
GEF开发中默认的快捷键有可能没有设置齐全,又或者开发中需要自定义设置一些快捷键及组合。

我在开发中也遇到此类问题,尤其是对每个键该写什么参数值很困惑。

在网上有一些零零星星的资料,找来研究了一下,现在将一些内容做个汇总:

GEF中设置快捷键主要是在自己的Editor中来处理KeyHandler
首先需要new出一个KeyHander;
然后对keyHander进行处理,主要是put操作,这里put就是设置相应快捷键以及组合键的方法;
再其次,将这个keyHander设置进你的Editor的Viewer中去,代码如:viewer.setKeyHandler(...);
这样基本上就可以了,以上操作我是放在configureGraphicalViewer()方法中去做的。
主要代码如下:
protected void configureGraphicalViewer() { 
		
		super.configureGraphicalViewer();		
		... ...	
		
		//--------------设置键盘操作--------------------
		keyHandler = new KeyHandler(); 
		keyHandler.put( KeyStroke.getPressed(SWT.DEL, 127, 0), 
				getActionRegistry().getAction(ActionFactory.DELETE.getId())); 
		keyHandler.put( KeyStroke.getPressed('+', SWT.KEYPAD_ADD, 0),
				getActionRegistry().getAction(GEFActionConstants.ZOOM_IN));
		keyHandler.put( KeyStroke.getPressed('-', SWT.KEYPAD_SUBTRACT, 0), 
				getActionRegistry().getAction(GEFActionConstants.ZOOM_OUT)); 
		keyHandler.put(KeyStroke.getPressed(SWT.F2, 0),  
                getActionRegistry().getAction(GEFActionConstants.DIRECT_EDIT));  
		keyHandler.put(KeyStroke.getReleased((char) 1, 97, SWT.CTRL),
				getActionRegistry().getAction(ActionFactory.SELECT_ALL.getId()));
		keyHandler.put(KeyStroke.getReleased((char) 0x03, 99, SWT.CTRL), 
				getActionRegistry().getAction(ActionFactory.COPY.getId()));  //复制 Ctrl+C
		keyHandler.put(KeyStroke.getReleased((char) 0x16, 118, SWT.CTRL), 
				getActionRegistry().getAction(ActionFactory.PASTE.getId())); //黏贴 Ctrl+V
		keyHandler.put(KeyStroke.getReleased((char) 24, (int)'x', SWT.CTRL), 
				getActionRegistry().getAction(ActionFactory.CUT.getId()));  //剪切 Ctrl+X
... ...
		        viewer.setKeyHandler(new GraphicalViewerKeyHandler(viewer).setParent(keyHandler));  	
		... ....
		}


这里最让我头疼的是KeyStroke.getReleased()和KeyStroke.getReleased();里面的参数当时很迷惑,到底写什么,老是写不对。

现在高清楚了,具体解释如下:
KeyStroke.getPressed()是用于设置一个按键的,而KeyStroke.getReleased()是用于设置组合按键的;
而里面的参数,(那KeyStroke.getReleased()来说,如ctrl+a):
第一个参数是你选择的字母在26个字母中的位置值强制转换成char型,如a,是第1位,因此第一个参数是:(char)1
第二个参数数字是ASCII码值,如'a'的ASCII码值是'97',也可以写成这样:(int)'a'
第三个参数一般是键盘上的特殊键,用SWT可以有直接引用。
这样理解之后,你设置值的时候就好办了。

Over.

注意:
经过实验发现:按键那个,组合键也可以用KeyStroke.getPressed(),用KeyStroke.getReleased()按键的时候反而不怎么灵敏,有时两个键连着按按快了就不识别,必须ctrl键按下去之后再按V或其他键,而改成KeyStroke.getPressed()则ok!
分享到:
评论

相关推荐

    org.eclipse.gef

    【标题】"org.eclipse.gef" 是一个与 Eclipse 开发平台相关的插件,全称为 Graphical Editing Framework。这个插件是 Eclipse 社区为构建图形化用户界面(GUI)和图形编辑工具提供的一种强大框架。它允许开发者创建...

    org.eclipse.gef.examples.shapes_anchor.zip

    【标题】"org.eclipse.gef.examples.shapes_anchor.zip" 指的是一个Eclipse GEF(Graphical Editing Framework)示例项目,它包含了有关图形编辑框架中形状锚点(Shape Anchor)的实例。Eclipse GEF是一个开源框架,...

    GEF_ALL+tk.eclipse.plugin.htmleditor_2.2.0.jar

    1.解压后得到GEF-ALL-3.4.1.zip和tk.eclipse.plugin.htmleditor_2.2.0.jar 2.安装GEF 解压GEF-ALL-3.4.1.zip,得到一个eclipse文件夹,打开可看到: 下面有三个文件夹:features,plugins,readme 分别拷贝上面...

    ecplise html编辑器tk.eclipse.plugin.htmleditor_2.2.0.jar

    ecplise html编辑器tk.eclipse.plugin.htmleditor_2.2.0.jar 配合GEF插件能在eclipse里识别html的标签来方便编辑html页面。tk.eclipse.plugin.htmleditor_2.2.0.jar文件直接复制到eclipse\plugins里面即可

    eclipse的GEF插件

    Eclipse的GEF(Graphical Editing Framework)插件是一个强大的工具,用于在Eclipse集成开发环境中创建、编辑和展示图形用户界面。它为开发者提供了一种框架,支持创建可定制的、交互式的图形编辑器,使得开发人员...

    eclipse_gef_example.rar

    1. **org.eclipse.gef.examples.text** 这个部分主要展示了如何在GEF环境中处理文本。它涵盖了添加、编辑和格式化文本的基本功能,以及如何将文本与图形元素结合。开发者可以学习如何创建文本图形编辑部件,并理解...

    GEF-ALL-3.2.2

    依赖:org.eclipse.gef***, org.eclipse.draw2d*** <br>Draw2D <br>Draw2D同样基于SWT,是一个轻量的图形库。Draw2D应用为GEF的View,但又不仅仅限于此。依赖:org.eclipse.draw2d*** 本软件GEF-ALL-3.2.2...

    gef 转折线的相关方法实现和 GEF的API chm 格式

    - `org.eclipse.gef.EditPart`:这是GEF的核心组件,它代表了图形模型中的一个元素,并负责将其映射到视图中。 - `org.eclipse.gef.GraphicalEditPart`:是EditPart的一个子类,专门处理图形元素的绘制和交互。 - `...

    Eclipse开发使用GEF和EMF(IBM 红皮书)中英文对照版

    《Eclipse开发使用GEF和EMF》是IBM红皮书系列中的一部经典著作,主要探讨了如何在Eclipse环境中利用GEF(图形编辑框架)和EMF( Eclipse模型框架)进行图形化应用程序的开发。这两项技术是Eclipse平台上的核心组件,...

    GEF-ALL-3.6.1.zip eclipse

    **GEF(Graphical Editing Framework)**是Eclipse平台中的一个关键组件,专门用于构建图形化编辑器。它为开发者提供了构建用户界面的强大工具,尤其是针对那些需要图形化表示的数据和流程。GEF的设计目标是使得开发...

    m2eclipse+gef+svn插件离线安装包

    安装m2eclipse插件时会依赖gef插件和svn插件,压缩包内包含m2eclipse + gef + svn的全部插件安装包,可以直接离线安装,本人亲测,在Eclipse3.7下安装成功,可以新建Maven项目。 需要注意的是,在离线安装时,切记...

    gef.rar_GEF eclipse_eclipse appl_eclipse ve_gef

    标题中的"gef.rar_GEF eclipse_eclipse appl_eclipse ve_gef"揭示了这个压缩包与GEF(图形编辑框架)有关,它是一个用于Eclipse集成开发环境(IDE)的插件,用于创建图形用户界面(GUI)和可视化编辑器。Eclipse ...

    eclipse插件 GEF-SDK-3.4.0.zip

    GEF(Graphical Editing Framework)是Eclipse平台中的一个关键组件,专门用于构建图形化用户界面(GUI)和图形编辑器。本压缩包"GEF-SDK-3.4.0.zip"提供了GEF的软件开发工具包,帮助开发者在Eclipse环境中创建功能...

    GEF入门实例代码2《Eclipse插件开发》中实例

    总之,通过这个"GEF入门实例代码2",开发者可以了解到如何在Eclipse中构建一个基于GEF的图形编辑器,这不仅涉及数据模型的设计,还包括视图的绘制、用户交互的处理以及可撤销/重做机制的实现。通过实践,开发者可以...

    eclipse中emf,gef,ve的安装

    - **下载地址**:`http://www.eclipse.org/downloads/download.php?file=/tools/gef/downloads/drops/R-3.2-200606270816/GEF-runtime-3.2.zip` - **VE (Visual Editor)**:一个可视化的编辑器,使得开发者能够通过...

    GEF-ALL-3.8.2.zip eclipse插件

    html页面在eclipse中编辑必须的插件,解压后覆盖对应的文件夹,然后把tk.eclipse.plugin.htmleditor_2.2.0.jar 放到plugins文件夹下,重启eclipse,新建html文件就可以了。

    GEF-ALL-3.9.101.zip

    标题中的"GEF-ALL-3.9.101.zip"指的是通用图形编辑框架(Generic Edit Framework)的一个版本,具体是3.9.101。...这个过程涉及到了软件工程中的插件架构、图形编辑框架、MVC设计模式以及Eclipse插件系统的使用。

    GEF-Update-3.7.1.zip

    开发者可以使用这个文件来更新或安装GEF插件到他们的Eclipse环境中。 4. **plugins**:这个目录通常包含了GEF插件的具体实现。每个子目录代表一个Eclipse插件,包含了对应的JAR文件和其他资源。这些插件扩展了...

    GEF入门案例1

    打开plugin.xml,然后在dependencies中选择"Add",找到并添加"org.eclipse.gef"库,确保项目能够使用GEF的功能。 2. 为了能看到图形化编辑的结果,还需要添加视图依赖。 三、重构项目结构 1. 为了更好地组织代码,...

    GEF快速入门教程和EMF教程

    - 为项目添加`org.eclipse.gef (3.1.0)`依赖。这可以通过编辑`plugin.xml`文件并在“dependencies”部分添加相应的条目完成。 - 添加依赖后,项目的构建路径将包含GEF库,从而可以在项目中使用GEF功能。 ### 创建...

Global site tag (gtag.js) - Google Analytics