1

我正在尝试设置在 jar 文件根目录下的资源文件夹中找到的字体“bilboregular.ttf”。如果我从 netbeans 运行字体设置成功,但是如果从 jar 文件中它不是

代码:

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

1 回答 1

2

您的 main 不能使用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 操作可能会失败。

于 2012-12-06T19:40:23.883 回答