我使用 SWT 和 JFace(在 Windows 上)构建了一个 Java 应用程序。在这里,我想将电子邮件地址作为文本放入菜单项中,并使用以下操作类:
private class MyAction extends Action {
public MyAction() {
super("[email protected]");
}
@Override
public void run() {
// code to execute
}
}
当然:
protected MenuManager createMenuManager() {
MenuManager menuBar = new MenuManager();
MenuManager myMenu = new MenuManager("Menu");
myMenu.add(new MyAction());
menuBar.add(myMenu);
return menuBar;
}
让我有点困惑的是,当显示菜单时,“at”字符丢失了,取而代之的是一个空格。
我可以以某种方式保留@字符吗?
我已经尝试过在 @ 字符前面放一个双反斜杠,或者用 Unicode 符号 \u0040 替换 @ 字符 - 这两种方法都没有帮助。
这似乎是
Action
代码中的“加速器”文本处理,如果没有选项卡,则将选项卡或 @ 后面的任何内容转换为菜单的单独部分。
由于代码在查找 @ 之前首先查找选项卡,使用:
super("[email protected]\t"); // Added tab at end
似乎有效。
或者仅使用
Menu
、MenuItem
和侦听器而不是 MenuManager
也可以。