从Jar访问自定义字体
我将在我的应用程序中使用自定义字体。 为此,我使用Font.createFont()
方法。 我的代码如下。 当我使用命令运行我的主类时,它工作正常
java myAppl.class
字体文件与我的类文件位于同一目录中。 但是当我将所有文件和字体文件捆绑在JAR中然后从JAR运行我的应用程序时,不会加载自定义字体。 为什么?
InputStream is = this.getClass().getResourceAsStream("myfont.TTF"); uniFont=Font.createFont(Font.TRUETYPE_FONT,is); Font f = uniFont.deriveFont(24f);
我该怎么办?
- 确保字体文件名和扩展名的大小写与文件系统中的大小写完全相同。 Windows可能不区分大小写,但Java是。
- 检查
getResourceAsStream()
返回的InputStream
是否为null
。 如果为null
,则表示未找到资源。 - 将字体放在Jar的根目录中,并在名称前添加“/”作为前缀。
正如安德鲁的回应,我已经测试了上面的代码并且正常工作:
InputStream is = this.getClass().getResourceAsStream("/myfont.TTF"); uniFont=Font.createFont(Font.TRUETYPE_FONT,is);
在文件名前缺少“/”。 注意:Netbeans的jar包
尝试将字体复制到jre / lib / font文件夹
或使用包限定名称(“com.mypackagename.myfont.TTF”)