2017-09-22 7 views
1

JFaceメニューマネージャを使用しています。いくつかのメニュー項目には@の文字が含まれています。たとえば、電子メールをメニュー項目のリストとして表示している場合などです。JFaceメニューラベルで '@' charをエスケープする方法

これを実行すると、メニューには@の文字はそのまま表示されますが、以下に示すようにスペースが挿入されます。

IMenuManager mgr = ... 
mgr.add(new Action("[email protected]") { 
    @Override 
    public void run() { 
    // Action run 
    } 
}); 

私の質問は、どのように我々は@文字をエスケープしますされ、次のよう

コードメニューエントリを作成するには?

答えて

0

通常、特殊文字は重複を介してそれらをエスケープすることができます。しかし、この場合、JFaceにはこれを防ぐバグ(または機能?)があるようです。

コメントに示唆されているように、唯一の回避策は、@文字をメニューラベルの末尾に追加することです。このトリックを適用すると、メニューラベルが正しく表示されます。ラベルの右側に余分なスペースが追加されます。

+0

私が '@'を二重にすると、SWTは最初の '@' charを表示しますが、その後にスペースを追加します。例えば、 'foo @@ bar.org'と指定すると、' foo @ bar.org'と表示されます。 – singularity

+0

もう一つ興味深い発見です。 '@'を持つ項目については、別の '@'の後に接尾辞を付けます。これでメニュー項目がそのまま表示されます(最後にユーザーが見えないスペースがある可能性があります)。したがって、単一の '@'があれば、それはスペースとして表示されます。 2つの '@ 'がある場合、最初の' @'をそのまま表示し、2番目のものをスペースに変換します。 – singularity

+1

あなたはmacOSを使用しているようですが、メニュー項目の作成に使用するコードを投稿できますか? –

関連する問題