java-如何从资源文件夹加载自定义字体

niwlg2el  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(407)

我正在使用JavaSwing创建一个应用程序,但是我也在尝试加载一些字体!问题是:我有一个带有自定义字体的资源文件夹,当我尝试使用以下代码加载它们时:

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");
    }

这是我的资源文件夹:我的项目文件和文件夹
它总是根据路径显示错误。
示例:无法读取字体文件数据。

解决方案

我需要补充一下 /Font 这样地: Nunito = CustomFont("/Fonts/Nunito/Nunito-BlackItalic.ttf"); 我的资源文件夹也不在java文件夹中。现在看起来是这样的:解决方案项目文件和代码

7kjnsjlb

7kjnsjlb1#

您可能想了解如何访问java中的资源。
您需要前导/表示类路径的根以及资源包名称。

Nunito = CustomFont("/resources/Fonts/Nunito/Nunito-BlackItalic.ttf");

尽管如此,我还是不知道你的类在哪里,但奇怪的是你的资源文件夹/包与java是分开的,通常它们会在同一个文件夹中,只是在不同的包中。

相关问题