【问题标题】:Internal API Replacement in Java 11Java 11 中的内部 API 替换
【发布时间】:2018-10-04 00:48:06
【问题描述】:

谁能告诉我下面列出的 API 的替换

SunToolkit.getContainingWindow

SwingUtilities2.getFontMetrics

SwingUtilities2.stringWidth

SwingUtilities2.drawString

SwingUtilities2.clipStringIfNecessary

SwingUtilities2.setLeadAnchorWithoutSelection

DefaultLookup.getIcon

以及下面列出的类

sun.font.FontUtilities
com.sun.java.swing.plaf.motif.MotifComboBoxUI
com.sun.java.swing.plaf.windows.WindowsComboBoxUI
com.sun.java.swing.plaf.motif.MotifScrollBarUI
com.sun.java.swing.plaf.windows.WindowsScrollBarUI 
com.sun.swing.internal.plaf.metal.resources.metal_it

【问题讨论】:

  • getFontMetrics, stringWidth, drawString 在技术上可以通过GraphicsGraphics2D 完成
  • DefaultLookup.getIcon - 你看过UIManager吗?
  • 你为什么认为为了你的缘故必须有一个替代品?你一开始就不应该使用这些方法。
  • @MadProgrammer 确实,这些方法已经存在了二十年了,但是当我们可以使用实现内部方法不必要地包装调用时,为什么要使用官方 API 的这些方法呢?
  • @Holger 因为在某个时间点,不管人们怎么想,那些“内部”API 可以而且将会改变——最好听取那些记录了它们“不推荐”使用或“用于仅供内部使用”

标签: java swing graphics migration java-11


【解决方案1】:

我得到了关于 SwingUtilities2 的链接。请参考以下链接。

https://bugs.openjdk.java.net/browse/JDK-8132119

SwingUtilities2.stringWidth
SwingUtilities2.drawString
SwingUtilities2.clipStringIfNecessary

以上这些方法都可以换成javax.swing.plaf.basic.BasicGraphicsUtils

BasicGraphicsUtils.stringWidth
BasicGraphicsUtils.drawString
BasicGraphicsUtils.getClippedString

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-20
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多