2012-12-05 48 views
1

我想在jar文件的根目錄下的資源文件夾中找到一個字體「bilboregular.ttf」。如果我從NetBeans中的字體設置成功,但是運行如果從jar文件是不jar文件中的java設置字體

CODE:

main method:{ 

     String s = System.getProperty("user.dir") + "\\src\\resources\\" + "bilboregular.ttf"; 
     File a = new File(s); 
     if (a.exists()) { 
      this.loadFont(s); 
     } else { 
      this.loadFont(this.getClass().getResource("/resources/" + "bilboregular.ttf").getFile()); 
     } 
} 

public void loadFont(String s) { 
    try { 
     font = java.awt.Font.createFont(java.awt.Font.TRUETYPE_FONT, new File(s)); 
     font = font.deriveFont(Font.PLAIN, 20); 
     GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     ge.registerFont(font); 
     setFonts(); 
    } catch (Exception ex) { 
    } 

} 

public boolean setFonts() { 
    jLabel3.setFont(font); 
    jLabel4.setFont(font); 
    return true; 
} 

回答

2

你的主要不能使用getClass()因爲它static(假設你的意思public static void main(String args[])「主」)。

試試這個代碼:

InputStream is = getClass().getResourceAsStream("/resources/bilboregular.ttf"); 
Font f = Font.createFont(Font.TRUETYPE_FONT, is); 

如果這不起作用:請把你的JAR文件的結構,並拋出的異常(在你的catch塊如使用記錄儀)。
Btw。一個空的異常塊在這裏不是一個好主意,因爲在很多情況下IO操作可能會失敗。

+0

正如你所說的那樣通過了字體創建的輸入流。它的工作就是這樣。謝謝 – mangusbrother

+0

太棒了! :-)但是,如果這有助於或解決您的問題,請標記爲已解決。 – ollo