Java字体createFont无法正常工作(IOException)

时间:2017-12-20 16:49:42

标签: java swing fonts 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。有什么建议吗?感谢

1 个答案:

答案 0 :(得分:0)

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));
}