这是我的问题:我正在尝试加载保存在我的项目中的字体,但我不知道该怎么做...这就是我尝试过的:
private void registerFont(){
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
try{
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT,new File(classLoader.getResource("net/utils/ttf/Press Style Extra L.ttf").getFile())));
} catch(Exception e){
e.printStackTrace();
}
}
这是错误:
[Client thread / INFO]:[STDERR]:java.io.IOException:无法读取D:\ Client \ Client \ eclipse \ out \ production \ Client \ net \ utils \ ttf \ Press%20Style%20Extra %20L.ttf
[客户端线程/信息]:[STDERR]:在java.awt.Font.createFont(Font.java:1054)
答案 0 :(得分:0)
我认为代码中存在的问题是:
classLoader.getResource("net/utils/ttf/Press Style Extra L.ttf").getFile()
准确地说.getFile()
如果您使用的是classLoader.getResource(),那对您来说意味着您正在尝试从应用程序类路径中获取文件。在这种情况下,它可能会添加到您的资源或资源树的某个位置。在这种情况下,不需要采用“文件路径”,而只需直接使用流。
此代码适用于我:
final ClassLoader loader = Thread.currentThread().getContextClassLoader();
try (InputStream stream = loader.getResourceAsStream("Roboto-Thin.ttf")) {
Font font = Font.createFont(Font.TRUETYPE_FONT, stream);
System.out.println("Font: " + font);
} catch (FontFormatException | IOException ex) {
Logger.getLogger(FontLoader.class.getName()).log(Level.SEVERE, null, ex);
}
提示:
答案 1 :(得分:0)
try {
final Font font = Font.createFont(Font.TRUETYPE_FONT, new BufferedInputStream(new FileInputStream("some_font.ttf"))).deriveFont(Font.PLAIN, 18);
} catch (Exception e) {
e.printStackTrace();
}