You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:06:03