Java字体createFont无法正常工作(IOException)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java字体createFont无法正常工作(IOException)相关的知识,希望对你有一定的参考价值。
我正在尝试将我制作的自定义字体加载到JTable中。这是我的方式:
private void carregar_font(){
try {
URL fontName = getClass().getResource("fonts/open.ttf");
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(fontName.toString())));
} catch (IOException e) {
e.printStackTrace();
} catch(FontFormatException e) {
e.printStackTrace();
}
}
这给了我一个IOException。有什么建议吗?谢谢
答案
getClass().getResource
返回一个URL,而不是文件名。将其直接传递给new File
会导致文件无效且不存在。
资源URL不保证指向文件。改为使用getResourceAsStream和other Font.createFont method:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
try (InputStream fontStream = getClass().getResourceAsStream("fonts/open.ttf")) {
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, fontStream));
}
以上是关于Java字体createFont无法正常工作(IOException)的主要内容,如果未能解决你的问题,请参考以下文章
使用 CreateFont() 创建时,Tahoma (MS Shell Dlg 2) 字体在 Win7 中看起来被压扁