3

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

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

OS X で表示したいシンボルの写真を次に示します(出典: 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 );
4

4 に答える 4

2

問題の記号は、UnicodeおよびHTML文字セットを介して使用できます。あなたがする必要があるのは、テキスト文字列を<html>で始めてから文字コードを含めることによってJLabelにHTMLを表示させることです。

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

これはMacでも機能しますが、他のプラットフォームで何ができるかはわかりませんが、それはカバーされているようです。

于 2008-10-25T16:22:29.267 に答える
1

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

于 2008-10-25T18:03:32.400 に答える
0

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

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" );
}
于 2008-10-24T07:56:03.647 に答える
0

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

(System.getProperty("os.name").toUpperCase(Locale.US).indexOf("MAC OS X") == 0 )
于 2008-10-24T10:49:55.263 に答える