2

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

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

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

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

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

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

2 回答 2

1

获取它的 URL,然后查看此答案以创建它并在可用字体中注册它。

于 2012-12-04T07:41:35.950 回答
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课程,您可以在这里找到:
如何从资源文件夹加载文件?

于 2015-02-02T18:12:03.037 回答