質問

ユーザーが複数選択のプラットフォーム依存キーを使用して複数のアイテムを選択できるというJListのヒントを表示します。

ただし、OS X COMMANDシンボルをJLabelに表示する方法を見つけていません。これは、アップルキーとも呼ばれるコマンドキーのアップルキーボードに印刷されるシンボルを意味します。

これは、OS Xで表示したいシンボルの写真です。  COMMAND SYMBOL
(source: wikimedia.org

また、プラットフォームに依存しないようにします。

つまり

のようなもの
component.add( new JList() , BorderLayout.CENTER );
component.add( new JLabel( MessageFormat.format("With {0} you can " 
  + "select multiple items", 
  KeyStroke.getKeyStroke( ... , ... ) ) ) , BorderLayout.SOUTH );

{0} の代わりに、表示されるシンボルの上に表示されるはずです...

これを行う方法を知っている人はいますか? JMenuItemsにはシンボルがあるので、なんとかできるはずです...

自分の(非グラフィカルソリューション)は次のようになります。

add( new JLabel( MessageFormat.format(
  "With {0} you can select multiple items" , 
  System.getProperty( "mrj.version" ) != null ? "COMMAND" : "CTRL" ) ) ,
  BorderLayout.SOUTH );
役に立ちましたか?

解決

問題の記号は、UnicodeおよびHTML文字セットを介して利用できます。必要なのは、テキスト文字列を<!> lt; html <!> gt;で開始して、JLabelにHTMLを表示させることだけです。そして、文字コードを含めます。

JLabel label = new JLabel( "<html>&#8984; is the Apple command symbol." );

これはMacで動作しますが、他のプラットフォームで何が行われるのかわかりませんが、それは隠されているようです。

他のヒント

Davidが指摘しているように、Unicodeエスケープシーケンス\u2318を使用できますが、それをサポートするフォントで表示する必要があります。

あなたのソリューションは完璧に見えます。ヒントコードを除外して再利用するつもりだと思います。

add( new JLabel( MessageFormat.format(
  "With {0} you can select multiple items", 
  getMetaKeyHint(),
  BorderLayout.SOUTH );

public String getMetaKeyHint() {
    return System.getProperty( "mrj.version" ) != null ? "COMMAND" : "CTRL" );
}

次のコードを使用してシステムをチェックし、それに応じてロードします

(System.getProperty("os.name").toUpperCase(Locale.US).indexOf("MAC OS X") == 0 )
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top