好的,所以使用自定义字体时出现问题.基本上,我会从网上下载一个自定义字体,然后在程序中使用它.当我在Eclipse(我使用的编辑器)中运行程序时,一切正常,并且没有问题.但是,每当我将其从eclipse导出到jar中,或尝试从命令提示符运行它时,都会收到此非常烦人的错误:
java.io.IOException: Can't read REVOLUTION.ttf
at java.awt.Font.createFont(Unknown Source)
at TowerDefense.<init>(TowerDefense.java:55)
at TowerDefense.main(TowerDefense.java:302)
由于使用字体的位置,我会得到一些空指针异常.但是我不知道为什么它说看不懂.这是创建字体的代码:
try {
revolution = Font.createFont(Font.TRUETYPE_FONT, new File("REVOLUTION.ttf"));
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(revolution);
}
catch (Exception e) {
e.printStackTrace();
}
文件夹布局
塔防
src
default package
TowerDefense.java
Game.java
DragTest.java
JRE System Library
REVOLUTION.ttf
neuropol.ttf
解决方法:
您无法使用File API访问JAR的内容.
您必须使用Classloader的getResourceAsStream方法加载字体文件.为此,您必须将字体文件放在classpath上.
因此,您的代码变为:
revolution = Font.createFont(Font.TRUETYPE_FONT, getClass().getClassLoader().getResourceAsStream("REVOLUTION.ttf"));
如果字体包含在JAR的程序包或文件夹内,则路径将相应更改.
getResourceAsStream("com/example/font/REVOLUTION.ttf"); // if font is present inside com.example.font package
标签:fonts,java 来源: https://codeday.me/bug/20191027/1945275.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。