문제

우리는 사용자가 멀티 선택에 대한 플랫폼 종속 키로 여러 항목을 선택할 수 있다는 JLIST에 대한 힌트를 보여주고 싶습니다.

그러나 Jlabel에 OS X 명령 기호를 표시하는 방법을 찾지 못했습니다. 이는 Apple 키라고도하는 명령 키의 Apple 키보드에 인쇄 된 기호를 의미합니다.

다음은 OS X에 표시하고 싶은 상징의 그림입니다. COMMAND SYMBOL
(원천: wikimedia.org)

또한 IT 플랫폼을 독립적으로 갖고 싶습니다.

즉, 같은 것

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

대신 {0} 위에 보인 상징이 나타나야합니다 ...

당신 중 한 사람 이이 작업을 수행하는 방법을 아는 사람이 있습니까? jmenuitems에는 상징이 있기 때문에 어떻게 든 가능해야한다는 것을 알고 있습니다 ...

내 자신의 (비 그래픽 솔루션)는 다음과 같습니다.

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

해결책

문제의 기호는 유니 코드를 통해 유발할 수 있으며 HTML 문자 세트. 텍스트 문자열을u003Chtml> 그런 다음 문자 코드를 포함하십시오.

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

이것은 Mac에서 작동하지만 다른 플랫폼에서 무엇을할지 모르겠지만, 당신은 그것을 덮은 것 같습니다.

다른 팁

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

솔루션은 완벽 해 보입니다. 나는 당신이 힌트 코드를 고려하여 재사용 할 것이라고 가정합니다.

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

다음 코드를 사용하여 시스템을 확인하고 그에 따라로드합니다.

(System.getProperty("os.name").toUpperCase(Locale.US).indexOf("MAC OS X") == 0 )
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top