JLabelでOSXコマンドシンボルキーを表示する
質問
ユーザーが複数選択のプラットフォーム依存キーを使用して複数のアイテムを選択できるというJListのヒントを表示します。
ただし、OS X COMMANDシンボルをJLabelに表示する方法を見つけていません。これは、アップルキーとも呼ばれるコマンドキーのアップルキーボードに印刷されるシンボルを意味します。
これは、OS Xで表示したいシンボルの写真です。
(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>⌘ 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 )
所属していません StackOverflow