无法使用.getResource() - Java添加自定义字体

时间:2015-02-09 10:55:48

标签: java fonts getresource

我要将我的项目转换为jar文件。我正在使用this.getClass().getResource("");

设置我的所有图片和其他外部文件

添加图片没问题;

xButton.setIcon(new ImageIcon(this.class.getResource("/a/b/c/d/e.png")));

但我不能用这种方法注册字体;

...
        private final GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
...


try {

    ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(this.getClass().getResource("fonts/f1.ttf"))));

    // or either

    ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(MYCLASS.class.getResource("/a/b/c/d/f1.ttf"))));

    // or either

    ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(this.class.getResource("/a/b/c/d/f1.ttf"))));

    } catch (FontFormatException e2) {
            e2.printStackTrace();
    } catch (IOException e2) {
        e2.printStackTrace();
}

我从Eclipse获得的错误是:构造函数文件(URL)未定义。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,

我创建了一个InputStream并在将字体注册到系统时使用它。

工作代码是;

//code..
private final GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
final InputStream is = MYCLASS.class.getResourceAsStream("fonts/f1.ttf");
final InputStream is2 = MYCLASS.class.getResourceAsStream("fonts/f2.ttf");
//code..

try {

    ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, is));
    ge.registerFont(Font.createFont(Font.TRUETYPE_FONT,is2 ));

} catch (FontFormatException e2) {
    e2.printStackTrace();
} catch (IOException e2) {
    e2.printStackTrace();
}