2010-10-09 38 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