我要将我的项目转换为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)未定义。
答案 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();
}