我使用SWT和JFace(在Windows上)构建了一个Java应用程序.在这里,我想把一个邮箱地址作为文本放在菜单项中,并使用以下操作类:

private class MyAction extends Action {
    public MyAction() {
        super("xyz@gmail.com");
    }

    @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"字符不见了,而是在它的位置显示了一个空格.

我能以某种方式保留@字符吗?

我已经try 在@字符前面加一个双反斜杠,或者用Unicode符号\u0040替换@字符--这两种方法都没有用.

推荐答案

这似乎是Action代码中的"加速器"文本处理,它将标签后面的任何内容转换为菜单的单独部分,如果没有标签,则转换为@.

由于代码首先查找制表符,然后再查找@Using:

super("xyz@gmail.com\t");  // Added tab at end

看起来很管用.

如果所使用的字体支持它们,您还可以使用\uFF20"大型商业@"或\uFE6B"小型商业@".

或者,只使用MenuMenuItem和监听器,而不是MenuManager也是可行的.

Java相关问答推荐

Selenium Java:无法访问IFRAME内部的元素

如何使用CSS为选定但未聚焦的表格行设置背景 colored颜色 ?

如何将kotlin代码转换为java

Oracle DUAL表上使用DDL时jOOQ问题的解析'

Quarkus keycloat配置不工作.quarkus. keycloak. policy—enforcer. enable = true在. yaml表示中不工作

使用java访问具体子类特定方法的最佳方法是什么?

更新GWT 2.5.1到2.11.0和sencha GXT 3.1.1到4.1时出现错误

将java.util.Date转换为OffsetDateTime

在Java 17中使用两个十进制数字分析时间时出错,但在Java 8中成功

Docker不支持弹性APM服务器

如何将Pane的图像快照保存为BMP?

二进制数据的未知编码/序列化

循环不起作用只有第一个元素重复

用于Java的Visual Studio代码完成不起作用

如何在Maven Central上部署?

如何设计包含已知和未知键值对映射的Java类?

JavaFX:为什么我的ComboBox添加了一个不必要的单元格的一部分?

Java返回生成器的实现

Springboot应用程序无法识别任何@RestController或@Service,我认为@Repository也无法识别

ANTLR 接受特殊字符,例如 .标识符或表达式中的(点)和 ,(逗号)