设置自定义java字体时遇到问题

设置自定义java字体时遇到问题,java,fonts,Java,Fonts,Java字体不可靠 这是我目前的编码,这只是一个简单的方法,从文件中获取字体,然后返回,但我遗漏了一些东西,我只是不知道是什么。。。有人能帮忙吗 private Font createFont(){ try { URL fontUrl = getClass().getClassLoader().getResource("res/Fonts/aesysmatt.ttf"); Font mFont = Font.createFont(Font.TRUETYPE

Java字体不可靠

这是我目前的编码,这只是一个简单的方法,从文件中获取字体,然后返回,但我遗漏了一些东西,我只是不知道是什么。。。有人能帮忙吗

private Font createFont(){
    try {
        URL fontUrl = getClass().getClassLoader().getResource("res/Fonts/aesysmatt.ttf");
        Font mFont = Font.createFont(Font.TRUETYPE_FONT, fontUrl.openStream());
        GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font);
        return mFont;
    } catch (FontFormatException | IOException e) {
        e.printStackTrace();
    }
    return null;
}
我的错误是这样的:

   java.lang.NullPointerException
    at disparity.characterCreation.ColoredButton.createFont(ColoredButton.java:21)
    at disparity.characterCreation.ColoredButton.<init>(ColoredButton.java:37)
    at disparity.characterCreation.StartScreen.initialize(StartScreen.java:93)
    at disparity.characterCreation.StartScreen.<init>(StartScreen.java:61)
    at disparity.characterCreation.StartScreen$2.run(StartScreen.java:48)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
java.lang.NullPointerException
在disparation.characterCreation.ColoredButton.createFont(ColoredButton.java:21)
在disparation.characterCreation.ColoredButton.(ColoredButton.java:37)
初始化(StartScreen.java:93)
在disparation.characterCreation.StartScreen.(StartScreen.java:61)
在disparation.characterCreation.StartScreen$2.run(StartScreen.java:48)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
在java.awt.EventQueue.access$200(EventQueue.java:103)
位于java.awt.EventQueue$3.run(EventQueue.java:694)
在java.awt.EventQueue$3.run(EventQueue.java:692)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
在java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:161)
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:150)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

我不确定我是如何做到的,但在我修复它之后,这里是最后的错误行,希望它能帮助别人

    URL fontUrl = getClass().getResource("res/Fonts/aesymatt.ttf");

这一定是因为它正在加载原始的类加载器,这没有任何意义。

您确定
fontURL
不是
null
?这可能是这里的问题所在。i您的资源路径是否不正确(请尝试
/Fonts/aesysmatt.ttf
?)
getClass().getClassLoader().getResource(“res/Fonts/aesysmatt.ttf”)语句设置.class文件目录的路径。这里的实际设置如下所示:
dispation/characterCreation/
中的是我的类所在的位置,而
dispation/characterCreation/res/Font
目录中的是我的
aesysmatt.ttf
所在的位置。程序不知道在我不告诉的情况下输入
res
,所以那是行不通的,谢谢。那么,试着使用绝对路径——但我说的对吗?例如,
fontURL
null?是。我该怎么做绝对路径呢?如果你的类在package
foo.bar
中,那就是
/foo/bar/res/font/aesysmatt.ttf