kotlin - TornadoFX 不会在 Windows、NPE 上加载自定义字体
问题描述
我在 Windows 10 上运行,一些细节:
- Kotlin 版本:1.2.70
- TornadoFX 版本:1.7.17
- jvm目标:1.8
这是我将字体更改为我的应用程序的地方:
override val root = hbox{
menubar{
menu("File"){
item("Settings"){
style {
font = loadFont("app/assets/font/Ubuntu-L.ttf", 6.0)!!
}
}
}
}
}
调用函数 loadFont() 时会引发错误。这是堆栈跟踪:
kotlin.KotlinNullPointerException
at app.views.MenuBar$root$1$1$1$1$1.invoke(MenuBar.kt:20)
at app.views.MenuBar$root$1$1$1$1$1.invoke(MenuBar.kt:7)
at tornadofx.CSSKt.style(CSS.kt:1117)
at tornadofx.CSSKt.style$default(CSS.kt:1109)
at app.views.MenuBar$root$1$1$1$1.invoke(MenuBar.kt:19)
at app.views.MenuBar$root$1$1$1$1.invoke(MenuBar.kt:7)
at tornadofx.MenuKt.item(Menu.kt:148)
at tornadofx.MenuKt.item$default(Menu.kt:144)
at app.views.MenuBar$root$1$1$1.invoke(MenuBar.kt:18)
at app.views.MenuBar$root$1$1$1.invoke(MenuBar.kt:7)
at tornadofx.MenuKt.menu(Menu.kt:26)
at tornadofx.MenuKt.menu$default(Menu.kt:25)
at app.views.MenuBar$root$1$1.invoke(MenuBar.kt:17)
at app.views.MenuBar$root$1$1.invoke(MenuBar.kt:7)
at tornadofx.ControlsKt.menubar(Controls.kt:910)
at app.views.MenuBar$root$1.invoke(MenuBar.kt:15)
at app.views.MenuBar$root$1.invoke(MenuBar.kt:7)
at tornadofx.LayoutsKt.hbox(Layouts.kt:384)
at tornadofx.LayoutsKt.hbox$default(Layouts.kt:96)
at app.views.MenuBar.<init>(MenuBar.kt:14)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
at java.base/java.lang.Class.newInstance(Class.java:560)
at tornadofx.FXKt.find(FX.kt:410)
at tornadofx.UIComponent.add(Component.kt:815)
at app.views.MainView$root$1.invoke(MainView.kt:15)
at app.views.MainView$root$1.invoke(MainView.kt:5)
at tornadofx.LayoutsKt.vbox(Layouts.kt:388)
at tornadofx.LayoutsKt.vbox$default(Layouts.kt:103)
at app.views.MainView.<init>(MainView.kt:6)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
at java.base/java.lang.Class.newInstance(Class.java:560)
at tornadofx.FXKt.find(FX.kt:410)
at tornadofx.FXKt.find$default(FX.kt:399)
at tornadofx.App.start(App.kt:78)
at MyApp.start(main.kt:7)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:919)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(PlatformImpl.java:449)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175)
at java.base/java.lang.Thread.run(Thread.java:844)
经过一番搜索,我发现尝试在 Windows 上安装字体,但没有任何变化。
解决方案
推荐阅读
- c# - 查看 2d 对撞机是否在 2 点之间
- python - 使用矢量投影查找点到线的距离
- reactjs - AXIOS Async/Await 如何最好地编写代码?
- javascript - 在 SessionStorage 中未保存更改时警告用户
- azure-logic-apps - Azure Logic App Outlook 连接器“发送带有选项的电子邮件”
- python - SqlAlchemy 更改关联对象上的附加字段
- java - 如何在url上实现spring security
- elasticsearch - 范围 ElasticSearch 聚合
- amazon-web-services - 用于备份/灾难恢复的 ebs 快照轮换的 Lambda v Cron
- r - 如何根据 geom_path 中的方向为箭头着色