问题描述
我有这个内部的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,您必须同时执行这两个操作。