2009-04-06 9 views
8

나는 DefaultStyledDocument를 골머리로 쓴 채 스타일을 올바른 모노 스페이스 폰트로 설정하는 올바른 방법을 찾아 내려하고있다. "적절한"에 의해 내가 선택한 글꼴 것을 의미 : (? 자바에서이 작업을 수행하는 표준 방법이)스윙에서 모노 스페이스 폰트를 선택하는 올바른 방법

  1. 사용자의 컴퓨터에 존재하는 고정 폭 글꼴은 사용자의 환경 설정에 지정된 글꼴이
  2. 지정된 글꼴이 없으면 표준 고정 폭 글꼴 ("Monospaced")으로 되돌아갑니다.

    StyleConstants.setFontFamily(mainStyle, "Monospaced"); 
    

    을이 또한 작동합니다 :

이 작동

StyleConstants.setFontFamily(mainStyle, "Lucida Console"); 

하지만 문제의 글꼴 가족이 모두에 있는지 알 방법을 알아낼 수없는 것 사용자의 컴퓨터 (setFontFamily에 대한 반환 값이 없음)이며 고정 폭 글꼴입니다. "Lucida Consoleq"를 사용하면 기본 글꼴이 무엇이든간에 사용하는 것으로 보입니다.

답변

2

난 당신이

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); 

javadoc

+1

모두 열거해야합니까? 그 중 하나가 존재 하는지를 테스트하는 방법은 없습니다. –

3

java.awt.Fontjavadoc를 참조하십시오 싶은 생각합니다. public static Font decode(String str) 방법을 사용하여 원하는 것을 성취 할 수있는 것으로 보입니다. 이 메소드의 javadoc 마지막 단락은 다음과 같습니다.

기본 크기는 12이며 기본값은 입니다. 스타일은 PLAIN입니다. str이 이 아닌 유효한 크기를 지정하면 글꼴의 크기는 12입니다. str이 유효한 스타일을 지정하지 않으면 글꼴의 스타일은 PLAIN입니다. str 인수에 유효한 글꼴 이름을 지정하지 않으면이 메서드는 "Dialog"라는 계열 이름의 글꼴을 반환합니다. 시스템에서 의 글꼴 그룹 이름을 확인하려면 GraphicsEnvironment.getAvailableFontFamilyNames() 메서드를 사용하십시오. str가 null의 경우, 새로운 Font는 이며, 이름은 "Dialog"이며, 사이즈는 12이며, 길이는 PLAIN 입니다.

찾고있는 글꼴 군중이 존재하지 않으면 "대화 상자"가 반환됩니다. 리턴 값으로 가져 오지 않는 한 폰트 패밀리가 존재합니다.

3

Monospaced은 Java가 시스템의 기본 고정 너비 글꼴로 매핑하는 가상 이름입니다 (예 : Dialog).

+1

하지만 부적절한 것처럼 보이기 때문에 기본값을 원하지 않습니다. 내가 원하는 것을 찾지 못하면 기본값으로 돌아가고 싶습니다. –

관련 문제