设置自定义java字体时遇到问题
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
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?是。我该怎么做绝对路径呢?如果你的类在packagefoo.bar
中,那就是/foo/bar/res/font/aesysmatt.ttf