Question

Nous voulons montrer à un JList que l’utilisateur peut sélectionner plusieurs éléments avec la clé dépendante de la plate-forme pour effectuer une sélection multiple.

Cependant, je n'ai trouvé aucun moyen d'afficher le symbole COMMANDE OS X dans un JLabel, ce qui signifie le symbole imprimé sur le clavier Apple sur la touche de commande, également appelée touche Apple.

Voici une photo du symbole que je souhaite afficher sur OS X.  SYMBOLE DE COMMANDE
(source: wikimedia.org )

Je souhaite également que cette plate-forme soit indépendante.

I.e. quelque chose comme

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

Où, au lieu du {0} , il devrait apparaître au-dessus du symbole vu ...

Est-ce que l’un d’entre vous sait comment faire cela? Je sais que cela doit être possible car, dans le JMenuItems, il y a le symbole ...

Les miennes (solutions non graphiques) ressemblent à ceci:

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

La solution

Le symbole en question est disponible via Unicode et les jeux de caractères HTML. Tout ce que vous avez à faire est de faire en sorte que votre JLabel affiche le code HTML en commençant sa chaîne de texte par & Lt; html & Gt; puis incluez le code du caractère.

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

Cela fonctionnera sur un Mac, mais je n'ai aucune idée de ce qu'il va faire sur les autres plates-formes, bien que vous ayez l'air de l'avoir couvert.

Autres conseils

Comme le souligne David, vous pouvez utiliser la séquence d'échappement Unicode \u2318 bien qu'elle doive être affichée avec une police la prenant en charge.

Votre solution semble parfaite. Je suppose que vous avez l'intention d'extraire le code d'aide afin de le réutiliser.

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

J'utilise le code suivant pour vérifier le système et le charger en conséquence

(System.getProperty("os.name").toUpperCase(Locale.US).indexOf("MAC OS X") == 0 )
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top