【问题标题】:Add SWT context menu in SWT Table with Shortcut Keys使用快捷键在 SWT 表中添加 SWT 上下文菜单
【发布时间】:2021-11-04 02:59:52
【问题描述】:

我正在尝试使用键名在 SWT 表上添加上下文菜单。 上下文菜单正常出现,但我无法设置键名,因为我们可以在菜单贡献中将其称为“序列”。 我没有使用 Menu Contribution,而是使用 MenuItem。

这是我的代码。

final MenuItem item = new MenuItem(menu, SWT.PUSH);   
item.setText(save);
item.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event event) {
            //saveFunction
        }
 });

这是有效的,但我想添加键名称也与菜单名称类似:

谁能帮帮我,因为我不能使用 MenuContribution。

【问题讨论】:

  • 这只是一个普通的 SWT 应用程序还是在 Eclipse 插件中? Eclipse 在插件中为这类事情提供了额外的功能。
  • 这是一个 Eclipse 插件应用程序,但我没有使用 plugin.xml 创建此表的菜单。

标签: java eclipse swt


【解决方案1】:

您可以使用MenuItem.setAccelerator设置菜单项的键:

item.setAccelerator(SWT.MOD1 | 'S');

请注意,这仅在显示菜单时才有效,如果未显示菜单,则需要使用按键侦听器。我在这里使用了SWT.MOD1 修饰符而不是SWT.CTRL,因此密钥将是macOS 上正确的⌘+S

在不自动添加加速器文本的平台上,您可以使用以下方法设置文本:

String acceleratorText = Action.convertAccelerator(SWT.MOD1 | 'S');

item.setText(save + '\t' + acceleratorText);

这里Actionorg.eclipse.jface.action.Action

在 Eclipse 插件中,您可能应该使用可重定向操作来与标准保存代码集成。

【讨论】:

  • SetAccelerator 是一种正在工作的菜单的快捷键。但我的意思是在菜单文本中可见的 Key (Ctrl +S) 文本。我还想用菜单文本显示这个键序列,但我确实只想用 menuItem.setText(Save Ctrl+S) 设置它,因为可以有多个具有不同名称大小的菜单和钥匙。所以,我正在寻找一些方法来保存带有文本的键序列。
  • 关键文字显示在macOS上,不知道其他操作系统是怎么做的。使用正确的 Eclipse 插件 API 的另一个原因应该是正确的。
  • 我已经添加了ActionContributionItem用来获取加速器文本的代码
  • 非常感谢。 Action.convertAccelerator(SWT.MOD1 | 'S');正在工作。
猜你喜欢
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多