2010-10-09 74 views
1

我在我的Java小程序初始化函數下面幾行:Java小程序:讀TTF文件 - 訪問被拒絕

try { 
    this.font = Font.createFont(
    Font.TRUETYPE_FONT, 
    new File("fonts/myfont.ttf") 
).deriveFont(24f); 
    GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font); 
} catch(Exception ex){ 
    System.out.println(ex); 
} 

當我打開與appletviewer中的小程序,字體如預期加載。但是,當我打開HTML頁面的任何Web瀏覽器,我得到這個錯誤在Java控制檯:

java.security.AccessControlException: 訪問被拒絕(java.io.FilePermission中 字體/ myfont.ttf讀)

並且加載了默認字體。

(How)我能解決這個問題嗎?

回答

3

你不能用applet訪問本地文件---這是設計!

你可以(也應該)嵌入您的.jar文件中的字體文件,並使用Class.getResourceAsStream等來訪問它(Font.createFont有一個重載接受一個InputStream,而這正是該類型Class.getResourceAsStream回報)。

+1

我想這樣,但我不知道該怎麼做......請問您可以發佈代碼示例嗎? – elektronikLexikon 2010-10-09 17:36:38

+0

@elektronikLexikon:我不能(因爲我覺得它足夠簡單,可以自己完成),但是首先通過玩耍(和閱讀)'Class.getResourceAsStream',確保你明白該函數如何定位資源。將字體文件放在正確的位置(通常與'.class'文件位於同一位置),然後使用它直到它工作。一旦它工作,傳遞給'Font.createFont'很容易。 – 2010-10-09 17:38:48

+0

謝謝!我想我得到這個工作。 – elektronikLexikon 2010-10-09 18:30:33