`BasicLookAndFeel` 子类在 Java 11 中激活抗锯齿的正确方法是什么?
What's the proper way for a `BasicLookAndFeel` subclass to activate anti-aliasing in Java 11?
我有这个内部 Swing Look&Feel,并且像往常一样迁移到 Java 11,SwingUtilities2
成员的用法将被官方 APIs 取代。
大多数都已解决,但我还没有找到任何有关如何破解抗锯齿的工作建议。
L&F 构建为 BasicLookAndFeel
的子class,它具有抗锯齿机制;然而,这些似乎需要通过 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,我将无法使用它。
那么...我有什么选择?
我可能会使用不同的基础 class,但那是......可怕的。
(我知道@kleopatra 将抗锯齿称为“没有快乐结局的故事”,但这是关于获取预先配置的提示并正确应用它们,而不是故意打开或关闭 AA。 )
Anti-aliasing 外观设置由 JComponent.setUI()
选取。
在 Java 8 中,它确实 UIManager.getDefaults().get(SwingUtilities2.AA_TEXT_PROPERTY_KEY)
。
在 Java 9 中,它确实 UIManager.getDefaults().get(RenderingHints.KEY_TEXT_ANTIALIASING)
.
没有渐变,因此您可以一步清理 API 并在一个单独的步骤中过渡到更新的 Java,您必须同时执行这两项操作。
我有这个内部 Swing Look&Feel,并且像往常一样迁移到 Java 11,SwingUtilities2
成员的用法将被官方 APIs 取代。
大多数都已解决,但我还没有找到任何有关如何破解抗锯齿的工作建议。
L&F 构建为 BasicLookAndFeel
的子class,它具有抗锯齿机制;然而,这些似乎需要通过 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,我将无法使用它。
那么...我有什么选择?
我可能会使用不同的基础 class,但那是......可怕的。
(我知道@kleopatra 将抗锯齿称为“没有快乐结局的故事”,但这是关于获取预先配置的提示并正确应用它们,而不是故意打开或关闭 AA。 )
Anti-aliasing 外观设置由 JComponent.setUI()
选取。
在 Java 8 中,它确实 UIManager.getDefaults().get(SwingUtilities2.AA_TEXT_PROPERTY_KEY)
。
在 Java 9 中,它确实 UIManager.getDefaults().get(RenderingHints.KEY_TEXT_ANTIALIASING)
.
没有渐变,因此您可以一步清理 API 并在一个单独的步骤中过渡到更新的 Java,您必须同时执行这两项操作。