Java 无法读取 font.ttf

Java cannot read font.ttf

我正在尝试使用 JFrame 在 Java 中制作游戏,并且正在制作标题屏幕。对于我的标题,我尝试使用我下载的自定义字体,并保存在名为“titleFont.ttf”的文件层次结构中。但是,在使用代码(如下)时,我不断收到以下错误。

在Main.java中:

public class Main {

    public static void main(String[] args) {
        
        Setup.loadFont("assets/titleFont.ttf");
        
        // Create the window
        new AppWindow(Setup.window, Setup.width, Setup.height, Setup.content, Setup.titlePanel);
        System.out.println("Window running...");

    }

}

在Setup.java中:

public static Font loadFont(String path) {

    
    try {
        
        InputStream fileStream = Font.class.getResourceAsStream(path);
        Font myFont = Font.createFont(Font.TRUETYPE_FONT, fileStream);
        return myFont.deriveFont(Font.PLAIN, 12f);
        
    } catch (FontFormatException | IOException e) { e.printStackTrace(); }
    
    return null;
    
}

java.io.IOException: Problem reading font data.
at java.desktop/java.awt.Font.createFont0(Font.java:1183)
at java.desktop/java.awt.Font.createFont(Font.java:1052)
at engine.Main.loadFont(Main.java:25)
at engine.Main.main(Main.java:12)

这是我的文件设置:

有人可以让我知道我需要修复什么以及如何修复吗?先感谢您!另外,这是否意味着我只加载字体,而不是将其设置为使用?如果是这样,我该如何设置字体,使屏幕上书写的文本采用自定义字体样式?

P.S。我对此很陌生,所以请尝试像没有经验的人一样解释这一点。抱歉!

资源‌‌‌ ‌ ‌ ‌‌‌‌‌ ‌ ‌‌ ‌‌‌‌eysrt 未在文件中创建系统。测试文件允许对这些文件进行非常相似的访问。应该记住它们必须由 VM 编译。如果它们具有预期的标签,GCC 将在加载文件时自动调用 testFilesPresent()(例如 source A.out)。如果您想要 class 脚本模块的 class 名称,您可以使用:TEST.B{}

File(String) 构造函数将其参数视为相对路径(相对于“当前”目录)。

因此您可能想要指定一个绝对路径(以“/”开头),或者从应用程序启动位置到文件的实际相对路径。

可能更好的方法是使用从类路径中的资源创建的流(而不是文件)。

例如,请参阅 Cant add custom font with using .getResource() - Java

的已接受答案