4

アプリケーションでクラスを使用して、AWTUtilitiesカスタム ウィンドウ形状を作成しています。私の知る限り、他に方法はありません。それは要件です。

javadoc 生成で次のエラーが表示されます。

警告: com.sun.awt.AWTUtilities は Sun 独自の API であり、将来のリリースで削除される可能性があります

これは正確にはどういう意味ですか?使用できますが、どのリリースで動作しなくなる可能性がありますか? では、なぜ入れるのでしょうか?さらに重要なことに、ここでの本当の問題は、もし Sun がそれを取り除けば、同じことを行う別の方法に置き換える可能性が高いでしょうか? それが警告の目的ですか?

コードを呼び出す前に、AWTUtilities クラスの存在を確認するだけでよいと思います。しかし、私がそれをする必要がない場合、それは不快です。

似たようなクラスの経験がある人はいますか?それらは最終的に API に受け入れられ、警告は削除されたか、同じことを行う別の方法に置き換えられましたか? これについて心配する必要がありますか?

参考までに、私はこれを読みました:

AWTUtilities の配布方法

4

2 に答える 2

4

Oracle のドキュメントには次のように記載されています。

注: com.sun.awt.AWTUtilities クラスは公式にサポートされている API の一部ではなく、実装の詳細として表示されます。API は、コア プラットフォーム以外での限定的な使用のみを目的としています。更新リリース間で大幅に変更される可能性があり、削除されるか、他のパッケージまたはクラスに移動されることさえあります。このクラスは、Java リフレクション経由で使用する必要があります。サポートされているパブリック API は、次の主要な JDK リリースで表示されます。

JDK 7 が登場するまでには長い時間がかかるため、しばらく時間がかかる可能性があります。それを使用すべきかどうかは、あなたの会社だけが答えられるリスク管理の問題です。展開された JRE を保証できる内部アプリケーションについて話している場合、互換性のある JRE を保証できるため、問題は発生しません。外部の顧客への展開について話している場合は、この暫定 API が変更された場合のサポート計画を用意する必要があります。

これを行う安定した方法は、このスニペットに従って SWT でシェルを作成し、SWT_AWT ブリッジを使用してアプリケーションで使用するフレームを取得することです。

java.awt.Frame frame = SWT_AWT.new_Frame(shell);

単一のプラットフォーム (Windows など) にデプロイするだけの場合は、単一の SWT jar とネイティブ ライブラリを投げます。複数のプラットフォームをターゲットにしている場合、これは苦痛になります。

つまり、AWTUtilities リスクに対処するか、SWT_AWT ブリッジを使用するかの 2 つです。

編集:

しばらく経ち、Java 7 がリリースされました。これを実現するために公式にサポートされている方法については、Java チュートリアルにドキュメントがあります。下部の「成形ウィンドウの実装方法」セクションに例が示されています。もちろん、これはJava 7を強制できることを前提としています

于 2010-08-03T22:43:51.257 に答える
0

新しい Frame オブジェクトは必要ありません。使用できるのは

this.setShape(shape);

またはこのようなフレーム名

Frame1.setShape(shape);

多くの AWT メソッドが java.awt.Frame に適用されました

于 2013-02-26T03:28:11.197 に答える