不使用MenuContribution为SWT Table上下文菜单添加快捷键标注的方法
实现方案
无需引入MenuContribution,用原生SWT API两步即可实现需求:
1. 菜单项显示快捷键提示
SWT的MenuItem原生支持通过*半角制表符\t*分隔菜单名称和快捷键文本,制表符后的内容会自动右对齐,就是你需要的显示效果。
修改后的代码示例:
final MenuItem item = new MenuItem(menu, SWT.PUSH); // 名称和快捷键之间用\t分隔,自动右对齐 item.setText("保存\tCtrl+S"); item.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(Event event) { // 执行保存逻辑 saveFunction(); } });
2. 绑定快捷键实际触发逻辑(可选)
如果需要按下对应快捷键实际执行操作,给目标控件(比如你的SWT Table)添加键盘监听即可:
table.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { // 匹配Ctrl+S快捷键 if ((e.stateMask & SWT.CTRL) != 0 && e.keyCode == 's') { saveFunction(); e.doit = false; } } });
如果需要全局生效,可使用Display.getCurrent().addFilter()监听全局按键事件。
适配注意
如果要做跨平台兼容,可判断系统类型:macOS下快捷键修饰符用SWT.COMMAND,提示文本可以换成⌘S,Windows/Linux用Ctrl+S即可。
内容的提问来源于stack exchange,提问作者A.Goel
相关产品推荐
相关产品推荐

