如何使用图像</key>将快捷键(Alt + <键>)分配给SWT按钮

时间:2015-02-24 06:14:25

标签: button swt shortcut alt

我正在开发一个RCP应用程序,我需要将快捷方式( Alt + [key] )分配给 SWT Button with image 。 我可以使用“&amp;”为文本分配快捷键。字符, fox ex:button.setText(“&amp; Select All”);然后Alt + S将作为按钮的快捷方式。

我有两个问题:

  1. 如何在没有使用键监听器的情况下将Alt + [键]快捷键分配给SWT按钮和图像(无文本)?

  2. 如何将带有文本的Alt + [key]快捷键分配给SWT按钮,但该文本中没有快捷键字母,再次不使用键侦听器。 例如:“UnFix”是按钮上的文本,快捷键应为Alt + Q.

  3. 我希望在SWT中应该有办法做到这一点。

2 个答案:

答案 0 :(得分:1)

您可以通过在作为助记符字母的字母前放置&符号来选择助记符(例如"&Select All")。

如果控件没有文本或该文本中没有出现所需的字母,您将需要使用键事件监听器。没有办法解决这个问题。

有些应用程序围绕“遗失字母”工作,因为他们将助记符放在括号中,如下所示:"UnFix (&Q)"。虽然这在技术上有用,但我发现这是一种美学上相当不幸的选择。

使用不明显的助记符也存在可用性问题:用户如何知道或记住 Alt + Q 表示'UnFix'?

答案 1 :(得分:0)

在尝试了很多工作之后,我终于可以将快捷键分配给带有图像的SWT按钮了。

SWT Button.class利用getText()方法来查找助记符,因此覆盖Button.class的getText()方法和返回助记键将达到目的。 checkSubclass()方法也应该被覆盖,什么都不做,否则swt的不允许子类化错误。

Button newButton = new Button(parent, SWT.PUSH){
        @Override
        public String getText() {
            return "&N";
        }

        @Override
        protected void checkSubclass() {
            // Do Nothing to avoid Subclassing Not Allowed error.
        }
    };
    newButton.setImage(newButtonImage);

我上面的示例newButton有快捷键Alt + N。