2011-04-14 33 views
6

我将在我的应用程序中使用自定义字体。为此,我使用Font.createFont()方法。 我的代码如下。当我运行使用命令我的主类从Jar访问自定义字体

的Java myAppl.class

的字体文件在同一目录下,我的类文件,它工作正常。但是,当我在JAR中捆绑所有文件和字体文件,然后从JAR运行我的应用程序时,自定义字体不会加载。为什么?

InputStream is = this.getClass().getResourceAsStream("myfont.TTF"); 
uniFont=Font.createFont(Font.TRUETYPE_FONT,is); 
Font f = uniFont.deriveFont(24f); 

我该怎么办?

+2

字体的路径是否正确,并且它不是像jar文件中的resources/fonts/myfont.TTF那样的东西?还要确保案件是正确的。 – lobster1234 2011-04-14 21:02:49

回答

0

尝试将字体复制到JRE/lib目录/字体文件夹

或使用包限定域名(“com.mypackagename.myfont.TTF”)

4
  1. 确保的情况下字体文件名&扩展名与代码中的文件系统完全相同。 Windows可能不区分大小写,但Java是。
  2. 检查InputStreamgetResourceAsStream()返回null。如果是null,则表示资源未找到。
  3. 将字体放入Jar的根目录并添加“/”作为名称的前缀。
1

安德鲁回应,我测试过确切上面的代码和工作原理:

InputStream is = this.getClass().getResourceAsStream("/myfont.TTF"); 
uniFont=Font.createFont(Font.TRUETYPE_FONT,is); 

只是缺少 “/” 前的文件名。注意:Netbeans的jar包