我遇到使用JFace IAction和setAccelerator()
的键盘快捷键问题。我的示例代码:
menuAction.setAccelerator(SWT.CTRL | 'A');
我的应用程序无法识别键盘快捷键 CtrlL + A 。
答案 0 :(得分:1)
据我所知,IAction
的加速器属性只包含应使用关键快捷键的信息。
捕获关键快捷方式并执行匹配操作的实际实现不是JFace的一部分,或者至少在默认情况下不活动。作为Platform / UI一部分的一些零碎部分使其在工作台中工作。
要了解使加速器在独立的JFace应用程序中工作所需的实际内容,您应该在ExternalActionManager.ICallback::isAcceleratorInUse()
〜第825行中跟随ActionContributionItem
的调用。
如果这不会导致解决方案,您仍然可以添加显示过滤器来调用关键快捷方式的相应操作(另请参阅SWT Actions with Keyboard Shortcuts... without having to add them to the menu)。
答案 1 :(得分:0)
不要忘记将此操作menuAction
添加到菜单管理器中,在应用所有内容后,您必须更新菜单管理器。在菜单管理器上调用updateAll(true)
方法。此更新是必需的,因为菜单管理器尚未注意到您的加速器分配!