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.
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 );
-
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" ); }
dhiller : Yes that would be my intention. Although I'd prefer to show the COMMAND key _symbol_, which means the symbol that's printed on the keyboard on the apple/command key.dhiller : OK, I've edited my question to make it more concise.From Steve McLeod -
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 )
dhiller : Although your solution may also work, the mac developer guides state that the "proper way" to check wether your application platform is Mac OS X is checking the property "mrj.version" for a non-empty string. Annoying, eh? ;-)From Dan -
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>⌘ 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.
dhiller : THank you for the hint, I will check that out tomorrow at work.From banjollity -
As David points out, you can use the Unicode escape sequence
\u2318
although it must be displayed with a font supporting it.From PhiLho
0 comments:
Post a Comment