我正在应用程序中使用AWTUtilities类来创建自定义窗口形状。据我所知,没有别的办法了。这是一项要求。
javadoc生成给了我这个错误:
警告: com.sun.awt.AWTUtilities是Sun专有的API,可能会在以后的版本中删除。
这到底是什么意思?我可以使用它,但是它可能会停止使用任何版本吗?那为什么要放进去?更重要的是,这里真正的问题是,如果Sun把它取出来,他们会用另一种方法来代替它吗?这就是警告的意义吗?
我想我可以在调用代码之前检查是否存在AWTUtilities类。但如果我不需要这么做的话那就太讨厌了。
有人有类似课程的经验吗?它们最终是否被接受到API中,并将警告删除或替换为另一种做相同事情的方法?我需要关心这件事吗?
FYI,我读过:
发布于 2010-08-03 22:43:51
甲骨文文档声明:
注意: com.sun.awt.AWTUtilities类不是官方支持的API的一部分,而是作为实现细节出现的。API仅用于核心平台之外的有限用途。它可能在更新版本之间发生剧烈变化,甚至可能在其他包或类中被删除或移动。这个类应该通过Java反射使用。受支持的公共API将出现在下一个主要的JDK版本中。
JDK 7已经有很长一段时间了,所以可能还需要一段时间。你是否应该使用它是一个风险管理问题,只有你的公司才能回答。如果我们讨论的是可以保证部署的JRE的内部应用程序,那么您就不会有问题,因为您可以保证一个兼容的JRE。如果我们讨论的是部署到外部客户,那么如果这个临时API发生变化,您需要有一个支持计划。
要做到这一点,一个稳定的方法是按照这个片段在SWT中创建一个Shell,然后使用SWT_AWT桥获得一个框架,以便在您的应用程序中使用:
java.awt.Frame frame = SWT_AWT.new_Frame(shell);如果您只是部署到单个平台(如Windows),那么抛出一个SWT和本机库。如果您是针对多个平台,那么这将成为一个痛苦。
因此,这是两个选择:处理AWTUtilities风险或使用SWT_AWT桥。
编辑:
一段时间过去了,Java 7也过时了。有关于在Java教程中实现这一点的官方支持的方法的文档。底部的“如何实现成形窗口”一节给出了一个例子。当然,这假设您可以强制执行Java 7
发布于 2013-02-26 03:28:11
不需要新的框架对象,只能使用
this.setShape(shape);或者像这样的帧名
Frame1.setShape(shape);许多AWT方法已经应用到java.awt.Frame中。
https://stackoverflow.com/questions/3399998
复制相似问题