Classes BeanInfo et introspection

Si vous créez des composants ou des beans pour les utiliser dans l'éditeur visuel (par exemple, en ajoutant des composants à la palette), vous pouvez contrôler leur comportement en fournissant une classe BeanInfo.

Une classe BeanInfo class implémente java.beans.BeanInfo et permet à l'éditeur visuel de déterminer le comportement de la vue Propriétés du bean et d'indiquer si un module de personnalisation est disponible. L'éditeur visuel inclut des classes BeanInfo pour les contrôles AWT et Swing courants.

Comme la classe BeanInfo contient des informations utilisées uniquement lors de la conception, elle est généralement stockée dans un projet différent de celui de la classe du bean et n'est pas incluse lorsque le bean est déployé. Visual Editor for Java utilise un certain nombre de règles pour vous permettre d'associer les classes BeanInfo aux beans Java qu'elles décrivent. Vous devez maîtriser ces règles si vous utilisez des beans Java associés à des classes BeanInfo que l'éditeur visuel doit détecter. C'est le cas, par exemple, si vous utilisez un ensemble de classes de beans Java provenant d'un tiers ou que vous avez développé les beans Java et les classes BeanInfo que vous utilisez.

Pour mieux connaître les classes BeanInfo, vous pouvez télécharger la spécification JavaBeans sur le site java.sun.com/products/javabeans/docs/.

Informations de base

La classe java.beans.Introspector est utilisée pour localiser la classe BeanInfo d'un bean Java. La phase pendant laquelle cette opération est effectuée s'appelle l'introspection et est exécutée par l'éditeur visuel la première fois qu'un bean est utilisé. Par exemple, lorsque vous faites glisser un bouton pour la première fois à partir de la palette, une introspection est effectuée pour tenter de localiser la classe BeanInfo appropriée. Une fois l'introspection du bean terminée, les résultats sont placés en mémoire cache pour optimiser les performances. Toutefois, lorsque l'éditeur visuel détecte que la classe BeanInfo a été modifiée et que la mémoire cache est obsolète, l'introspection est à nouveau exécutée.

L'introspection d'un bean est effectuée en appelant la méthode statique getBeanInfo(Class) avec la classe bean sous forme d'argument. Par exemple :

java.beans.Introspector.getBeanInfo(MyJavaBean.class)

Le programme d'introspection utilise la logique suivante pour localiser une classe BeanInfo de la classe de l'argument MyJavaBean. Cette opération comprend un certain nombre d'étapes séquentielles et à l'issue de chaque étape réussie, le programme d'introspection arrête sa vérification. Si une étape échoue, l'étape suivante est utilisée pour tenter de localiser la classe BeanInfo en effectuant une procédure différente.

Si une classe BeanInfo est détectée pour la classe, Le programme d'introspection ne la renvoie pas explicitement. A la place, il utilise les informations associées pour créer une classe de résultat temporaire qui implémente java.beans.BeanInfo.

Chemin de recherche BeanInfo

Le meilleur moyen de comprendre le chemin BeanInfo est de prendre en compte la machine virtuelle Java créée pour effectuer l'introspection. La machine virtuelle dispose d'un chemin de classe composé des entrées suivantes :

Après avoir créé la machine virtuelle java.beans.Introspector définit sa liste de packages à utiliser pour la recherche de classes BeanInfo avec la méthode public void setSearchPath(String[]).

Les arguments associés à cette méthode sont les suivants :

BeanInfo et attributs inhérents

Si le bean que vous écrivez hérite des attributs d'une superclasse, l'élément BeanInfo par défaut n'expose pas les attributs inhérents. Vous devez les exposer explicitement avec la méthode getAdditionalBeanInfo().

Par exemple :

public BeanInfo[] getAdditionalBeanInfo() {
try {                 
         // Renvoie tous les dispositifs hérités.                 
         return new BeanInfo[] {
Introspector.getBeanInfo(MyPanel.class.getSuperclass())};
} catch (IntrospectionException e) {            
return new BeanInfo[0];            
} 

Si un attribut inhérent n'est pas exposé, l'éditeur visuel ne le prend pas en compte, même s'il n'est pas défini dans le code source.

Rubrique parente : Extension de Visual Editor for Java

Tâches connexes
Contrôle des informations BeanInfo pour les développeurs de plug-in
Spécification de l'emplacement des classes BeanInfo

(C) Copyright IBM Corporation 1999, 2004. All Rights Reserved.