Java 我是否应该考虑使用AWTUtilities.setWindowsShape()?

Java 我是否应该考虑使用AWTUtilities.setWindowsShape()?,java,awt,awtutilities,jdk-internal-api,Java,Awt,Awtutilities,Jdk Internal Api,我正在应用程序中使用AWTUtilities类创建自定义窗口形状。据我所知,没有别的办法。这是一项要求 javadoc生成给了我以下错误: 警告:com.sun.awt.AWTUtilities是sun专有API,可能在将来的版本中删除 这到底意味着什么?我可以使用它,但它可能会停止与任何版本的工作?那为什么要放进去?更重要的是,这里真正的问题是,如果太阳把它取出来,他们会用另一种方法来代替它来做同样的事情吗?这就是警告的目的吗 我想我可以在调用代码之前检查AWTUtilities类是否存在。但

我正在应用程序中使用
AWTUtilities
类创建自定义窗口形状。据我所知,没有别的办法。这是一项要求

javadoc生成给了我以下错误:

警告:com.sun.awt.AWTUtilities是sun专有API,可能在将来的版本中删除

这到底意味着什么?我可以使用它,但它可能会停止与任何版本的工作?那为什么要放进去?更重要的是,这里真正的问题是,如果太阳把它取出来,他们会用另一种方法来代替它来做同样的事情吗?这就是警告的目的吗

我想我可以在调用代码之前检查AWTUtilities类是否存在。但如果我不需要这么做,那就太讨厌了

有没有人有过类似课程的经验?它们最终是否被API接受,警告是否被删除或替换为另一种做同样事情的方法?我需要关心这个吗

仅供参考,我已经阅读了以下内容:

甲骨文声明:

注意:com.sun.awt.AWTUtilities类不是官方支持的API的一部分,而是作为实现细节出现的。API仅用于核心平台之外的有限用途。在不同的更新版本之间,它可能会发生巨大的变化,甚至可能被删除或在其他一些包或类中移动。该类应通过Java反射使用。受支持的公共API将出现在下一个主要JDK版本中

JDK7已经推出了很长时间,所以可能还需要一段时间。你是否应该使用它是一个只有你的公司才能回答的风险管理问题。如果我们讨论的是一个内部应用程序,其中部署的JRE可以得到保证,那么您不会有问题,因为您可以保证兼容的JRE。如果我们谈论的是向外部客户部署,那么如果这个临时API发生变化,您需要制定一个支持计划

实现这一点的一种稳定方法是,按照此方法在SWT中创建一个Shell,然后使用SWT_AWT桥接器获得一个框架,以便在应用程序中使用:

java.awt.Frame frame = SWT_AWT.new_Frame(shell);
如果您只是部署到单个平台(如Windows),那么抛出单个SWT jar和本机库。如果你的目标是多个平台,那么这将成为一种痛苦

因此,这是两种选择:处理设备风险或使用SWT_AWT桥

编辑:


一段时间过去了,Java7已经过时了。在中有官方支持的实现方法的文档。底部的“如何实现成型窗口”部分给出了一个示例。当然,这假设您可以强制使用Java 7,您不需要新的框架对象,您只能使用

this.setShape(shape);
或者像这样的帧名称

Frame1.setShape(shape);

许多AWT方法已应用于java.AWT.Frame

我们不能使用SWT\u AWT,因为我们正在创建自定义shell。因此,我们必须应对风险。很高兴知道,在Java7之前,我不必担心这个类会被删除。