WEB开发网
开发学院软件开发Java GEF 添加 CTRL + A 等组合的快捷键 阅读

GEF 添加 CTRL + A 等组合的快捷键

 2009-09-07 00:00:00 来源:WEB开发网   
核心提示:网上一般都任务是无法在GraphicalViewer直接setKeyHandler方法 来注册Ctrl+a的快捷键的. Java代码 getGraphicalViewer().setKeyHandler(newGraphicalViewerKeyHandler(getGraphicalViewer()).setPare

网上一般都任务是无法在GraphicalViewer直接setKeyHandler方法 来注册Ctrl+a的快捷键的.

Java代码

getGraphicalViewer().setKeyHandler(new GraphicalViewerKeyHandler(getGraphicalViewer()).setParent(this.sharedKeyHandler));

Java代码

 private KeyHandler sharedKeyHandler = null; 
 
 protected KeyHandler initSharedKeyHandler() { 
 if (sharedKeyHandler == null) { 
  sharedKeyHandler = new KeyHandler(); 
  sharedKeyHandler.put(KeyStroke.getReleased('', 97, SWT.CTRL), getActionRegistry().getAction(ActionFactory.SELECT_ALL.getId())); 
// ''是我调试出来的, 还不明白怎么来的. 97也是调试出来的. 
 } 
 return sharedKeyHandler; 
 }

上面就是可以使用的代码. 注意,

Java代码

KeyStroke.getReleased, 而不是

Java代码

KeyStroke.getPressed. 这就是问题的关键所在了.

同理, 在调试中得到下面的按键键值:

Java代码  

// 编辑 F2 
KeyStroke.getPressed(SWT.F2, 0) 
// 删除DEL 
KeyStroke.getPressed(SWT.DEL, 127, 0) 
 
// 全选CTRL+A 
KeyStroke.getReleased('', 97, SWT.CTRL) 
// 撤销CTRL+Z 
KeyStroke.getReleased('', 122, SWT.CTRL) 
// 撤销CTRL+Y 
KeyStroke.getReleased('', 121, SWT.CTRL)

注: 一个按键的使用getPressed, 组合按键的使用getReleased

Tags:GEF 添加 CTRL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接