我正在开发一个RCP应用程序,我需要将快捷方式( Alt + [key] )分配给 SWT Button with image 。 我可以使用“&”为文本分配快捷键。字符, fox ex:button.setText(“& Select All”);然后Alt + S将作为按钮的快捷方式。
我有两个问题:
如何在没有使用键监听器的情况下将Alt + [键]快捷键分配给SWT按钮和图像(无文本)?
如何将带有文本的Alt + [key]快捷键分配给SWT按钮,但该文本中没有快捷键字母,再次不使用键侦听器。 例如:“UnFix”是按钮上的文本,快捷键应为Alt + Q.
我希望在SWT中应该有办法做到这一点。
答案 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。