1

jarファイルのルートの下にあるresourcesフォルダーにあるフォント「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

あなたのメインはgetClass()そのために使用できません(あなたが「メイン」を意味するとstatic仮定します)。public static void main(String args[])

このコードを試してください:

InputStream is = getClass().getResourceAsStream("/resources/bilboregular.ttf");
Font f = Font.createFont(Font.TRUETYPE_FONT, is);

これが機能しない場合:JARの構造とスローされた例外を投稿してください(たとえば、catchブロックでロガーを使用します)。
ところで。多くの場合、IO操作が失敗する可能性があるため、ここでは空の例外ブロックは適切ではありません。

于 2012-12-06T19:40:23.883 に答える