“ BasicLookAndFeel”子类在Java 11中激活抗锯齿的正确方法是什么?

问题描述

我有这个内部的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。)

解决方法

“外观”中的抗锯齿设置由let request = SKReceiptRefreshRequest() func requestDidFinish(_ request: SKRequest) { let appStoreReceiptURL = Bundle.main.appStoreReceiptURL //nil } func request(_ request: SKRequest,didFailWithError error: Error) { print("refresh failed \(error)") } func fetchReceipt() { reuest.delegate = self request.start() } 获取。
在Java 8中,它的确是JComponent.setUI()
在Java 9中,它确实UIManager.getDefaults().get(SwingUtilities2.AA_TEXT_PROPERTY_KEY)

没有逐步过渡的过程,因此您可以在一个步骤中清理API并在单独的步骤中过渡到较新的Java,您必须同时执行这两个操作。