【发布时间】:2020-08-14 11:45:34
【问题描述】:
我有这个内部 Swing Look&Feel,并且像往常一样迁移到 Java 11,SwingUtilities2 成员的用法将被官方 API 取代。
大多数都已解决,但我还没有找到任何有效的建议来破解抗锯齿。
L&F 是BasicLookAndFeel 的子类,具有抗锯齿机制;但是,这些似乎需要通过defaults.put(SwingUtilities2.AA_TEXT_PROPERTY_KEY, AATextInfo.getAATextInfo(SwingUtilities2.isLocalDisplay())); 激活,这复制了其他 Swing L&F 正在执行的启用 AA 的操作,但在 Java 11 中,此 API 不再可用。
我在许多可能甚至一些不太可能的地方摆弄了RenderingHints,但无济于事;出于某种原因,这些设置从未受到关注。
我几乎完成了使用调试器分析情况(L&F 的 LabelUI.paint() 函数上的断点并单步执行所有决策逻辑),但我发现 BasicLookAndFeel 似乎被硬编码为使用 AATextInfo 对象传递提示,如果我维护自己的 L&F,我将无法使用这些提示。
那么...我有什么选择?
我可能可以使用不同的基类,但这……太可怕了。
(我知道@kleopatra 将抗锯齿称为“没有快乐结局的故事”,但这是关于获取预配置的提示并正确应用它们,而不是故意打开或关闭 AA。)
【问题讨论】:
标签: java swing look-and-feel