Java - 如何从资源文件夹加载自定义字体
Java - How to Load a Custom Font From a Resources Folder
我正在使用 java swing 创建一个应用程序,但我也无法尝试加载一些字体!
这是问题所在:
我有一个带有一些自定义字体的资源文件夹,当我尝试使用此代码加载它们时:
public static Font CustomFont(String path) {
Font customFont = loadFont(path, 24f);
System.out.println(customFont == null);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(customFont);
return customFont;
}
public static Font loadFont(String path, float size){
try {
Font myFont = Font.createFont(Font.TRUETYPE_FONT, Launcher.class.getResourceAsStream(path));
return myFont.deriveFont(Font.PLAIN, size);
} catch (FontFormatException | IOException e) {
e.printStackTrace();
System.exit(1);
}
return null;
}
UiFonts.java
public static Font Nunito;
public static void init() {
Nunito = CustomFont("Fonts/Nunito/Nunito-BlackItalic.ttf");
}
这是我的资源文件夹:
My project file and folder
它总是根据路径向我显示错误。
示例:无法读取字体文件数据。
解决方案
我需要像这样在 Font
之前添加 /
:
Nunito = CustomFont("/Fonts/Nunito/Nunito-BlackItalic.ttf");
我的资源文件夹也不在我的 java 文件夹中。现在它看起来像这样:
Solution project file and code
您可能想阅读 Java 中的 Accessing Resources。
您需要前导 / 表示您的 class 路径的根以及 资源 包名称。
Nunito = CustomFont("/resources/Fonts/Nunito/Nunito-BlackItalic.ttf");
话虽这么说,但我不知道你 class 在哪里,你的 资源 folder/package 与你的 [=26= 是分开的,这很奇怪] 通常它们会在同一个文件夹中,只是在不同的包中。
我正在使用 java swing 创建一个应用程序,但我也无法尝试加载一些字体! 这是问题所在: 我有一个带有一些自定义字体的资源文件夹,当我尝试使用此代码加载它们时:
public static Font CustomFont(String path) {
Font customFont = loadFont(path, 24f);
System.out.println(customFont == null);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(customFont);
return customFont;
}
public static Font loadFont(String path, float size){
try {
Font myFont = Font.createFont(Font.TRUETYPE_FONT, Launcher.class.getResourceAsStream(path));
return myFont.deriveFont(Font.PLAIN, size);
} catch (FontFormatException | IOException e) {
e.printStackTrace();
System.exit(1);
}
return null;
}
UiFonts.java
public static Font Nunito;
public static void init() {
Nunito = CustomFont("Fonts/Nunito/Nunito-BlackItalic.ttf");
}
这是我的资源文件夹: My project file and folder
它总是根据路径向我显示错误。
示例:无法读取字体文件数据。
解决方案
我需要像这样在 Font
之前添加 /
:
Nunito = CustomFont("/Fonts/Nunito/Nunito-BlackItalic.ttf");
我的资源文件夹也不在我的 java 文件夹中。现在它看起来像这样: Solution project file and code
您可能想阅读 Java 中的 Accessing Resources。
您需要前导 / 表示您的 class 路径的根以及 资源 包名称。
Nunito = CustomFont("/resources/Fonts/Nunito/Nunito-BlackItalic.ttf");
话虽这么说,但我不知道你 class 在哪里,你的 资源 folder/package 与你的 [=26= 是分开的,这很奇怪] 通常它们会在同一个文件夹中,只是在不同的包中。