在测试我的JavaFX 8应用程序的GUI时,我注意到有些标签没有显示消除锯齿的文本。经过一番谷歌搜索和挣扎,我发现了一件非常烦人的事情。抗锯齿仅适用于字体大小超过80像素的标签。下面是一个将JavaFX和Swing应用程序与应用AA进行比较的示例:
示例代码:https://gist.github.com/anonymous/be60bb89181376ff12aa
有没有办法强制所有字体大小的AA? 这也发生在你身上吗?我在JavaFX Jira上搜索了一个类似的错误,但到目前为止还没有人抱怨。也许我应该为此打开一个?
可能会有所帮助的一些信息:
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
Windows 8.1 64 bits [Version 6.3.9600]
答案 0 :(得分:33)
默认情况下,JavaFX 8使用modena.css来设置LCD抗锯齿,在某些情况下似乎不会平滑字体。当字体大小大于80时,AA技术变为灰度AA(出于性能考虑)。因此,为了获得任何尺寸的平滑边缘,应该使用灰度AA。
这可以通过CSS完成:
.text{
-fx-font-smoothing-type: gray;
}
或通过系统参数:
-Dprism.lcdtext=false
或设置系统属性:
System.setProperty("prism.lcdtext", "false");
感谢所有回复Jira的人!
答案 1 :(得分:0)
System.setProperty("prism.lcdtext", "false");
必须在加载FXML模板之前被调用