GEF中组合按键设置汇总以及org.eclipse.gef.KeyStroke的方法的使用
来源:互联网 发布:施工进度计划编制软件 编辑:程序博客网 时间:2024/05/20 19:49
原址:GEF中组合按键设置汇总以及org.eclipse.gef.KeyStroke的方法的使用
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+CkeyHandler.put(KeyStroke.getReleased((char) 0x16, 118, SWT.CTRL), getActionRegistry().getAction(ActionFactory.PASTE.getId())); //黏贴 Ctrl+VkeyHandler.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!
0 0
- GEF中组合按键设置汇总以及org.eclipse.gef.KeyStroke的方法的使用
- Eclipse的GEF入门
- GEF property view的使用
- 使用GEF ScalableFreeformRootEditPart的注意事项
- 使用图形编辑框架GEF创建基于Eclipse的应用程序
- Eclipse GEF
- GEF:Tool的职责
- GEF模型的职责
- GEF的MVC结构
- GEF基本概念的文章
- GEF的MVC体系结构
- GEF的一些总结
- 关于requires 'org.eclipse.gef 0.0.0' but it could not be found的解决方法
- 关于REQUIRES 'ORG.ECLIPSE.GEF 0.0.0' BUT IT COULD NOT BE FOUND的解决方法
- 在GEF中实现悬空的连线
- GEF中鼠标双击事件的获取
- org.eclipse.gef源码下载地址
- gef
- php强制下载文件、文件强制下载、输出强制下载
- Java中Scanner类方法简介
- php踩坑
- android--持久化技术之SharedPreferences
- Eclipse C 补全设置
- GEF中组合按键设置汇总以及org.eclipse.gef.KeyStroke的方法的使用
- C++中引用(&)的用法和应用实例
- Tomcat配置文件Executor元素属性介绍
- c++ GUI库 游戏界面库
- mongoDB配置及服务启动制作
- 自定义的messagebar
- mybatis执行批量更新batch update 的方法
- 1100 - Again Array Queries (鸽笼定理)
- PHP操作AD域入门(一)