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
的已接受答案
我正在尝试使用 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
的已接受答案