如何从jar加载字体?

时间:2012-12-03 20:46:55

标签: java fonts jar jframe embedded-resource

我正在将Java.awt.Frame用于我的Java应用程序窗口,该窗口正在从main内部的循环中刷新。

应用程序的行为与从Eclipse运行时应该完全一样,但是当我将它打包到jar中时,它会绘制第一个屏幕,但之后没有其他内容。

当我尝试将窗口切换到JFrame时,它可以工作,但只有部分图像被绘制和更新。

我不确定问题是什么?如果从eclipse运行良好,它不应该在jar文件中运行完全相同吗?

编辑:我发现了问题所在。它是由于字体没有从jar文件加载。有没有办法让这些正确加载?这是我的代码:

Font font = Font.createFont(Font.TRUETYPE_FONT, 
  obj.getClass().getClassLoader().getResource(fontName));

2 个答案:

答案 0 :(得分:1)

获取一个URL,然后查看this answer创建它并在可用字体中注册它。

答案 1 :(得分:0)

尝试使用此代码从.jar文件中加载字体文件。

import java.awt.Font;
import java.awt.FontFormatException;
import java.io.IOException;
import java.net.URISyntaxException;

public class FontLoader
{
    private ResourceLoader loader;

    public FontLoader(String fontFilePath)
    {
        loader = new ResourceLoader(fontFilePath);
    }

    public Font getFont(int fontStyle, float fontSize) throws FontFormatException, IOException, URISyntaxException
    {
        Font font = Font.createFont(Font.TRUETYPE_FONT, loader.getResource());

        font = font.deriveFont(fontStyle, fontSize);

        return font;
    }
}

请注意,您还需要我可以在此处找到的ResourceLoader课程:
How do I load a file from resource folder?