Daniel Hiller
Daniel Hiller

Reputation: 3485

Display the OSX Command symbol key in a JLabel

We want to show a hint for a JList that the user can select multiple items with the platform dependent key for multiselect.

However I have not found any way to show the OS X COMMAND symbol in a JLabel, which means the symbol that's printed on the apple keyboard on the command key, also called apple key.

Here's a picture of the symbol I want to display on OS X. COMMAND SYMBOL
(source: wikimedia.org)

Also I do want to have it platform independent.

I.e. something like

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

Where instead of the {0} there should appear above seen symbol...

Does any one of you guys know how to do this? I know it must be possible somehow since in the JMenuItems there is the symbol...

My own (non graphical solutions) looks like this:

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

Upvotes: 3

Views: 2133

Answers (4)

PhiLho
PhiLho

Reputation: 41152

As David points out, you can use the Unicode escape sequence \u2318 although it must be displayed with a font supporting it.

Upvotes: 1

banjollity
banjollity

Reputation: 4540

The symbol in question is avaiable through Unicode, and the HTML character sets. All you need to do is make your JLabel display HTML by starting its text string with <html> and then include the character code.

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

This will work on a Mac, but I've no idea what it'll do on other platforms, although you do seem to have that covered off.

Upvotes: 2

Dan
Dan

Reputation: 1727

I use the following code to check for the system and load accordingly

(System.getProperty("os.name").toUpperCase(Locale.US).indexOf("MAC OS X") == 0 )

Upvotes: 0

Steve McLeod
Steve McLeod

Reputation: 52468

Your solution looks perfect. I assume you intend to factor out the hint code so you reuse it.

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" );
}

Upvotes: 0

Related Questions