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)); ... ....}