使用IAction :: setAccelerator不能按预期工作

时间:2016-06-28 07:37:58

标签: swt jface

我遇到使用JFace IAction和setAccelerator()的键盘快捷键问题。我的示例代码:

menuAction.setAccelerator(SWT.CTRL | 'A');

我的应用程序无法识别键盘快捷键 CtrlL + A

2 个答案:

答案 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)方法。此更新是必需的,因为菜单管理器尚未注意到您的加速器分配!