`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,您必须同时执行这两项操作。