我正在尝试在jar文件根目录下的resources文件夹中找到一个字体“bilboregular.ttf”。如果我从netbeans运行字体设置成功,但是如果从jar文件中它不是
CODE:
main method:{
String s = System.getProperty("user.dir") + "\\src\\resources\\" + "bilboregular.ttf";
File a = new File(s);
if (a.exists()) {
this.loadFont(s);
} else {
this.loadFont(this.getClass().getResource("/resources/" + "bilboregular.ttf").getFile());
}
}
public void loadFont(String s) {
try {
font = java.awt.Font.createFont(java.awt.Font.TRUETYPE_FONT, new File(s));
font = font.deriveFont(Font.PLAIN, 20);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(font);
setFonts();
} catch (Exception ex) {
}
}
public boolean setFonts() {
jLabel3.setFont(font);
jLabel4.setFont(font);
return true;
}
答案 0 :(得分:2)
您的主要内容无法使用getClass()
因为static
(假设您的意思是public static void main(String args[])
“main”)。
试试这段代码:
InputStream is = getClass().getResourceAsStream("/resources/bilboregular.ttf");
Font f = Font.createFont(Font.TRUETYPE_FONT, is);
如果这不起作用:请发布JAR的结构和抛出的异常(例如,在catch
块中使用记录器)。
顺便说一句。一个空的异常块在这里不是一个好主意,因为在许多情况下IO操作可能会失败。