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!
分享到:
相关推荐
Eclipse的GEF插件,GEF-ALL-3.5.0.zip
org.eclipse.gef.examples.shapes_anchor.zip
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 配合GEF插件能在eclipse里识别html的标签来方便编辑html页面。tk.eclipse.plugin.htmleditor_2.2.0.jar文件直接复制到eclipse\plugins里面即可
依赖:org.eclipse.gef***, org.eclipse.draw2d*** <br>Draw2D <br>Draw2D同样基于SWT,是一个轻量的图形库。Draw2D应用为GEF的View,但又不仅仅限于此。依赖:org.eclipse.draw2d*** 本软件GEF-ALL-3.2.2...
本插件是eclipse必不可少的插件,我们可以用这个插件开发一些图形。
安装m2eclipse插件时会依赖gef插件和svn插件,压缩包内包含m2eclipse + gef + svn的全部插件安装包,可以直接离线安装,本人亲测,在Eclipse3.7下安装成功,可以新建Maven项目。 需要注意的是,在离线安装时,切记...
出现这种情况的原因是在你安装新的插件以前你启动过 eclipse ,在 org.eclipse.update 文件夹下记录了插件的历史更新情况,它只记忆了以前的插件更新情况,而你新安装的插件它并不记录,所以删除掉这个文件夹就可以...
GEF入门实例代码2《Eclipse插件开发》中实例
html页面在eclipse中编辑必须的插件,解压后覆盖对应的文件夹,然后把tk.eclipse.plugin.htmleditor_2.2.0.jar 放到plugins文件夹下,重启eclipse,新建html文件就可以了。
eclipse插件 GEF-SDK-3.4.0.zip
eclipse gef example 例子 包括flow,logic,shapes,text四部分
GEF 是eclipse的可视化插件,安装一些其他的插件必备选项。
Eclipse-EMF-GEF资料.rar
最近发现很多人eclipse需要安装ve 但是很多人找不到版本,现在提供gef给大家
GEF.rar GEF.rar GEF.rar
将GEF-ALL-XX.zip解压缩,然后拷贝解压后的eclipse目录下的两个文件夹到 WINDOWS 下你的Eclipse安装目录。 UBuntu下到 usr/lib/eclispe和usr/share/eclipse, Merge合并所有的现有文件夹。
org.eclipse.gef 0.0.0 Eclipse 3.6.2 安装android adt时会用到
eclipse html插件的下载和安装 需求:需要在eclipse里面编辑html和jsp,语法高亮和语法提示,自动... 文件包括:Html插件tk.eclipse.plugin.htmleditor_2.2.0.jar;依赖库GEF-ALL-3.7.2.zip;下载链接和安装说明文档。
eclipse gef插件 绝对能用