Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Menu 如何逃离'@';JFace菜单标签中的字符_Menu_Swt_Eclipse Rcp_Jface - Fatal编程技术网

Menu 如何逃离'@';JFace菜单标签中的字符

Menu 如何逃离'@';JFace菜单标签中的字符,menu,swt,eclipse-rcp,jface,Menu,Swt,Eclipse Rcp,Jface,我们正在使用JFace菜单管理器。我们的一些菜单项包含@字符。例如,如果我们将电子邮件显示为菜单项列表 当我们这样做时,菜单不会按原样显示@字符,而是引入一个空格,如下所示 创建菜单项的代码如下所示: IMenuManager mgr = ... mgr.add( new Action( "dataloader.dev@datasert.com" ) { @Override public void run() { // Action run } } ); 我的问

我们正在使用JFace菜单管理器。我们的一些菜单项包含
@
字符。例如,如果我们将电子邮件显示为菜单项列表

当我们这样做时,菜单不会按原样显示
@
字符,而是引入一个空格,如下所示

创建菜单项的代码如下所示:

IMenuManager mgr = ... 
mgr.add( new Action( "dataloader.dev@datasert.com" ) { 
  @Override 
  public void run() { 
    // Action run 
  } 
} );
我的问题是,我们如何避开
@
字符


通常,特殊字符可以通过复制进行转义。然而,在这种情况下,JFace中似乎有一个bug(或特性?)阻止了这一点


正如评论中所建议的,唯一的解决办法似乎是在菜单标签的末尾附加一个
@
字符。应用此技巧后,菜单标签将正确显示。标签右侧只添加了一些额外的空格。

通常,特殊字符可以通过复制来转义。然而,在这种情况下,JFace中似乎有一个bug(或特性?)阻止了这一点


正如评论中所建议的,唯一的解决办法似乎是在菜单标签的末尾附加一个
@
字符。应用此技巧后,菜单标签将正确显示。只有一些额外的空间被添加到标签的右侧。

当我将它们加倍时,SWT显示第一个
@
字符,但在其后添加空间。例如,当我指定
foo@bar.org
时,它显示为
foo@bar.org
另一个有趣的发现。对于包含
@
的项目,我只是在另一个
@
后面加了后缀。现在,菜单项按原样显示(末尾可能有用户看不到的空格)。因此,如果有一个
@
,它将显示为空格。如果有两个
@
s,它会按原样显示第一个
@
,并将第二个转换为空格。您似乎正在使用macOS,是否可以发布用于创建菜单项的代码?我就是这么做的。IMenuManager管理器=//获取菜单管理器管理器添加(新操作(“菜单标签”){@Override public void run(){//Action run});
@
字符在哪里?在“菜单标签”中?请编辑原始帖子并添加代码,使其保持可读性。当我将
@
翻一番时,SWT会显示第一个
@
字符,但会在其后添加空格。例如,当我指定
foo@bar.org
时,它显示为
foo@bar.org
另一个有趣的发现。对于包含
@
的项目,我只是在另一个
@
后面加了后缀。现在,菜单项按原样显示(末尾可能有用户看不到的空格)。因此,如果有一个
@
,它将显示为空格。如果有两个
@
s,它会按原样显示第一个
@
,并将第二个转换为空格。您似乎正在使用macOS,是否可以发布用于创建菜单项的代码?我就是这么做的。IMenuManager管理器=//获取菜单管理器管理器添加(新操作(“菜单标签”){@Override public void run(){//Action run});
@
字符在哪里?在“菜单标签”中?请编辑原始帖子并添加代码,以保持可读性。