2014-06-20 4 views
0

나는 내 게임에 픽스 트 시스라는 글꼴을 포함 할 이것은 내가 사용하는 코드입니다 : 어떤 이유자바에서 글꼴을로드하는 방법은 무엇입니까?

try{ 
    Font myFont = null; 
    File fontFile = new File("Fixedsys.ttf"); 
    if(fontFile.exists()){ 
     myFont = Font.createFont(Font.TRUETYPE_FONT, fontFile).deriveFont(Font.PLAIN, 22f); 

     GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     ge.registerFont(myFont); 
     System.out.println("Not null"); 
    }else{ 
     System.out.println("FILE DOES NOT EXIST"); 
    } 
} catch (FontFormatException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

, 자바 파일이 존재하지 않는 생각과 선을 존재하지 않는 파일을 출력합니다. 나는 구글과 유래를 통해 검색 한하지만 사용할 때 다음 중 어느 것도 작동하지 :

myComponent.setFont(myFont); 

내가 말하는 오류를 얻을 :

cannot find variable myFont 

내가 이상 확인하고 반복해서 아무것도 잘못 보인다.

EDIT : if (file.exists()) 행을 제거했는데 다른 오류가 발생합니다. 나는 얻는다 :

Cannot read Fixedsys.ttf ! 

EDIT 2 : ug_의 코멘트는 올바르게 증명되었다. Java가 파일의 잘못된 폴더를 찾고있었습니다. 감사.

+2

@KrisScheibe 님이 암시 한 것 이외에 파일이 존재하는지 확인해야합니다. –

답변

2

변수는 catch 블록 내부의 로컬 변수이므로 다른 곳에서는 존재하지 않습니다.

catch 블록 외부에서 사용하려면 클래스 변수로 만들어야합니다. 그래서 같이

:

class SomeClass { 

    // declare here 
    private Font myFont; 

    public SomeClass() { 

      try{ 
       // initialize here 
       File fontFile = new File("Fixedsys.ttf"); 
       if(fontFile.exists()){ 
       myFont = Font.createFont(Font.TRUETYPE_FONT, fontFile).deriveFont(Font.PLAIN, 22f); 

       GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
       ge.registerFont(myFont); 
       System.out.println("Not null"); 
       }else{ 
        System.out.println("FILE DOES NOT EXIST"); 
       } 
      } catch (FontFormatException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

    } 

    // somewhere else: 
    myComponent.setFont(myFont); 

} 
+0

이클립스는 Font.createFont() 줄을 try/catch로 묶어야한다고 말합니다. – Thor

+0

@Thor는 try 외부에'Font myFont = null'을 넣습니다. 잡기. –

+0

@Thor 정확히 : Font.createFont()는 내부에 있어야하지만 변수는 catch 블록 외부에서 선언되어야합니다. –

0

진짜 대답은 글꼴 파일이 해당 경로 위치에 존재하지 않는다는 것입니다. Windows \ Fonts 또는 파일이 실제로 어디에 있나보십시오.

관련 문제