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)的主要内容,如果未能解决你的问题,请参考以下文章

Windows CreateFont:创立本人的字体

删除CreateFont创建的字体

CreateFont函数为什么改变不了字体?该怎么解决

替代 Font.createFont()?

使用 CreateFont() 创建时,Tahoma (MS Shell Dlg 2) 字体在 Win7 中看起来被压扁

Titanium mobileweb 字体无法正常工作