2008-10-23 8 views
3

사용자가 다중 선택을 위해 플랫폼 종속 키를 사용하여 여러 항목을 선택할 수 있다는 힌트를 JList에 표시하려고합니다.JLabel에 OSX 명령 기호 키 표시

그러나 JLabel에서 OS X COMMAND 기호를 표시하는 방법을 찾지 못했습니다. 즉, 사과 키라고도하는 명령 키의 사과 키보드에 인쇄 된 기호를 의미합니다.

는 여기에 내가 또한 내가 그것을 플랫폼에 독립적이하고 싶어 OS X의 COMMAND SYMBOL

에 표시 할 기호의 사진입니다.

e.e.

대신 {0} 위가 볼 나타나야 심볼의
component.add(new JList() , BorderLayout.CENTER); 
component.add(new JLabel(MessageFormat.format("With {0} you can " 
    + "select multiple items", 
    KeyStroke.getKeyStroke(... , ...))) , BorderLayout.SOUTH); 

같은 ...

너희들 중 하나가이 작업을 수행하는 방법을 알고 있습니까? 나는

내 자신의 (비 그래픽 솔루션)

은 다음과 같습니다 ... 어떻게 든 이후 기호가있는 JMenuItems 가능해야합니다 알고

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

답변

2

문제의 기호는 유니 코드를 통해 avaiable이다, 그리고 HTML 문자 집합 따라로드하려면 다음 코드를 사용합니다. 당신이해야 할 일은 <html>으로 텍스트 문자열을 시작하여 JLabel을 HTML로 표시 한 다음 문자 코드를 포함하기 만하면됩니다.

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

이 맥에서 작동합니다,하지만 난 당신이 떨어져 덮여 것 같다 않지만 그것이 다른 플랫폼에서 뭘할지 아무 생각도 없어.

+0

힌트를 위해 당신을 Thank, 나는 직장에서 내일 체크 아웃합니다. – dhiller

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

예, 제 의도입니다. COMMAND 키 _symbol_를 표시하는 것을 선호하지만, 이는 apple/command 키의 키보드에 인쇄 된 기호를 의미합니다. – dhiller

+0

그래, 더 간결하게하기 위해 나의 질문을 편집했다. – dhiller

0

나는 시스템을 확인하고

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

솔루션이 작동 할 수도 있지만 Mac 개발자 가이드는 Mac OS X에서 "mrj.version"속성이 비어 있지 않은 문자열인지 확인하는 응용 프로그램 플랫폼을 확인하는 "적절한 방법"이라고 설명합니다. 귀찮아, 응? ;-) – dhiller

1

David가 지적했듯이 유니 코드 이스케이프 시퀀스 \u2318을 사용할 수 있지만 지원하는 글꼴로 표시해야합니다.