2010-08-03 15 views
4

J'utilise la classe AWTUtilities dans mon application pour créer des formes de fenêtres personnalisées. Pour autant que je sache, il n'y a pas d'autre moyen de le faire. C'est une exigence.Dois-je m'inquiéter d'utiliser AWTUtilities.setWindowShape()?

La génération javadoc me donne cette erreur:

warning: com.sun.awt.AWTUtilities is Sun proprietary API and may be removed in a future release

Qu'est-ce que cela signifie exactement? Je peux l'utiliser, mais il peut cesser de fonctionner avec n'importe quelle version? Pourquoi le mettre, alors? Plus important encore, et la vraie question ici, si Sun la retire, la remplacera-t-elle probablement par une autre façon de faire la même chose? Est-ce que c'est la raison de l'avertissement? Je suppose que je pourrais juste vérifier la présence de la classe AWTUtilities avant d'appeler le code. Mais c'est juste désagréable si je n'ai pas besoin de le faire.

Est-ce que quelqu'un a une expérience avec des classes similaires? Ont-ils finalement été acceptés dans l'API et l'avertissement supprimé ou remplacé par une autre méthode de faire la même chose? Dois-je me préoccuper de cela?

Pour votre information, j'ai lu ceci:

How to distribute AWTUtilities

Répondre

4

Les Oracle documentation états:

Note: the com.sun.awt.AWTUtilities class is not part of an officially supported API and appears as an implementation detail. The API is only meant for limited use outside of the core platform. It may change drastically between update releases, and it may even be removed or be moved in some other packages or classes. The class should be used via Java Reflection. Supported and public API will appear in the next major JDK release.

7 a été JDK depuis longtemps à venir, il pourrait donc être un certain temps. Si vous devez l'utiliser est une question de gestion des risques que seule votre entreprise peut répondre. Si nous parlons d'une application interne où le JRE déployé peut être garanti, vous n'aurez pas de problème car vous pouvez garantir un JRE compatible. Si nous parlons de déploiement à des clients externes, vous devez disposer d'un plan de support si cette API provisoire est modifiée.

Une façon stable à faire serait de créer un Shell dans SWT selon ce snippet puis utilisez le pont SWT_AWT pour obtenir un cadre à utiliser dans votre application:

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

Si vous êtes déployez à une seule plate-forme (comme Windows) puis lancer un seul pot SWT plus la bibliothèque native. Si vous ciblez plusieurs plates-formes, cela devient pénible.

Voilà donc deux choix: gérer le risque AWTUtilities ou utiliser le pont SWT_AWT.

EDIT:

temps a passé et Java 7 est sorti. Il existe une documentation sur la manière officiellement prise en charge pour accomplir ceci dans le Java Tutorials. La section "Comment implémenter une fenêtre en forme" en bas donne un exemple. Bien sûr, cela suppose que vous pouvez mandater Java 7

+0

Nous ne pouvons pas utiliser SWT_AWT car nous créons des coques personnalisées. Nous devrons donc gérer le risque. Bon à savoir que je n'ai pas à m'inquiéter de la suppression de cette classe jusqu'à Java 7. –

0

Vous n'avez pas besoin d'un nouvel objet Frame, vous ne pouvez utiliser

this.setShape(shape); 

ou votre nom de cadre comme celui-ci

Frame1.setShape(shape); 

beaucoup de Les méthodes AWT ont été appliquées à java.awt.Cadre