Frage

Wir wollen einen Hinweis auf eine JList zeigen, dass der Benutzer mehrere Elemente mit dem plattformabhängigen Schlüssel für Mehrfachauswahl auswählen kann.

Allerdings habe ich keinen Weg gefunden, die OS X COMMAND-Symbol in einem JLabel zu zeigen, was das Symbol bedeutet, dass auf der Befehlstaste auf der Apple-Tastatur gedruckt ist, die auch als Apfel-Taste.

Hier ist ein Bild des Symbols ich auf OS X.
(Quelle: wikimedia.org )

Auch will ich es haben plattformunabhängig.

d. so etwas wie

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

Wo statt der {0} sollte es oben gesehen Symbol erscheinen ...

Hat jemand von euch wissen, wie dies zu tun? Ich weiß, dass es möglich sein muss irgendwie da in dem JMenuItems dort das Symbol ...

Meine eigene (nicht grafische Lösungen) sieht wie folgt aus:

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

Lösung

Das Symbol in Frage ist verfügbar durch Unicode und die HTML-Zeichensätze. Alles was Sie tun müssen, ist Ihre JLabel Anzeige HTML machen, indem sie mit ihren Textzeichenfolge Start und schließen dann den Zeichencode.

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

Dies wird auf einem Mac arbeiten, aber ich habe keine Ahnung, was es auf anderen Plattformen tun würde, obwohl Sie, dass bedeckt off zu haben scheinen.

Andere Tipps

Wie David weist darauf hin, können Sie die Unicode-Escape-Sequenz \u2318 verwenden, obwohl es mit einer Schriftart unterstützt sie angezeigt werden müssen.

Ihre Lösung sieht perfekt aus. Ich nehme an, Sie beabsichtigen, den Hinweis Code Faktor, so dass Sie es wieder verwenden.

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

Ich verwende den folgenden Code für das System zu überprüfen und laden entsprechend

(System.getProperty("os.name").toUpperCase(Locale.US).indexOf("MAC OS X") == 0 )
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top