How to keep @ character in SWT menu item text

30 views Asked by At

I built a Java application using SWT and JFace (on Windows). Here I would like to put an email address as text in a menu item and use the following action class:

private class MyAction extends Action {
    public MyAction() {
        super("[email protected]");
    }

    @Override
    public void run() {
        // code to execute
    }
}

and of course:

protected MenuManager createMenuManager() {
    MenuManager menuBar = new MenuManager();
    MenuManager myMenu = new MenuManager("Menu");
    myMenu.add(new MyAction());
    menuBar.add(myMenu);
    return menuBar;
}

What confuses me a bit is that when the menu is displayed, the "at" character is missing and a space is shown in its place instead.

Can I somehow keep the @ character?

I've already tried putting a double backslash in front of the @ character or replacing the @ character with the Unicode notation \u0040 - neither of which helped.

1

There are 1 answers

1
greg-449 On BEST ANSWER

This appears to be the "accelerator" text handling in the Action code which converts anything following a tab or @ if there is no tab to a separate part of the menu.

Since the code first looks for a tab before it looks for @ using:

super("[email protected]\t");  // Added tab at end

seems to work.

You could also use \uFF20 "large commercial @" or \uFE6B "small commercial @" if the font being used supports them.

Alternatively just using Menu, MenuItem and listeners rather than MenuManager also works.