JavaFX踩坑日记2_在macos上显示界面乱码

最近在学习JavaFX PC端软件开发,在Linux上显示一切正常,打算周末在macbook上接着实践时,发现UI跑起来却成了这样的一团乱码:

 部分UI出现了乱码。

立即Google查找问题的解决方法,发现很多都是从文件编码格式之类的入手,然而我很确定我的文件编码方式是正确,这显然并不是我所出现的问题的解决办法。

再看IDE是否有有意义的提示,果然发现了这么一个警告:

2021-12-04 11:17:44.431 java[74061:16444439] CoreText note: Client requested name ".SFNS-Regular", it will get Times-Roman rather than the intended font. All system UI font access should be through proper APIs such as CTFontCreateUIFontForLanguage() or +[NSFont systemFontOfSize:].
 

看起来似乎时.SFNS-Regular这个字体在我的macos上不存在,JavaFX自作主张地使用了Times-Roman代替了,而后者并没有双字节的中文字符,因此会有单字节对应的索引的字体代替,这就是乱码的根本原因。于是,我在场景中插入:

scene.getRoot().setStyle("-fx-font-family: 'serif'");

使用这个javafx-css强迫界面字体使用macos所拥有的中文字体进行显示,则乱码可以得到恢复:

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值