Si se crean componentes nuevos o beans para su uso en el editor visual (por ejemplo, añadir componentes a la paleta), puede controlar el comportamiento proporcionando una clase BeanInfo.
Una clase BeanInfo implementa java.beans.BeanInfo y es utilizada por el editor visual para determinar el comportamiento de la vista de propiedades del bean y si hay disponible un personalizador. El editor visual incluye clases BeanInfo para controles AWT y Swing comunes.
Como la clase BeanInfo contiene información necesaria sólo en tiempo de diseño, se suele guardar en un proyecto distinto de la propia clase bean, y no se incluye cuando se despliega el bean. El editor visual para Java utiliza una serie de reglas que le permiten asociar clases BeanInfo con los Beans de Java que describen. Es necesario comprender estas reglas si se utilizan Beans de Java que tengan clases BeanInfo y que se quiera que el editor visual las detecte. Por ejemplo, si se utiliza un conjunto de clases bean de Java de terceras partes o si ha desarrollado los beans de Java y clases BeanInfo que está utilizando.
Para más información sobre clases BeanInfo, puede descargar la especificación de JavaBeans en http://java.sun.com/products/javabeans/docs/.
La clase java.beans.Introspector se utiliza para localizar una clase BeanInfo para un bean de Java. El momento en que esto ocurre se denomina introspección, y lo realiza el editor visual la primera vez que se utiliza un bean. Por ejemplo, cuando se borra un botón de la paleta por primera vez, se produce una introspección que intenta localizar la clase BeanInfo correcta. Tras realizar la introspección en el bean, el resultado se coloca en antememoria para mejorar el rendimiento. No obstante, cuando el editor visual detecta que la clase BeanInfo puede haber cambiado y la antememoria es obsoleta, se vuelve a producir la introspección.
La introspección de un bean se realiza mediante la invocación del método estático getBeanInfo(Class) con la clase bean como argumento. Por ejemplo:
java.beans.Introspector.getBeanInfo(MyJavaBean.class)
El introspector utiliza la lógica siguiente para localizar una clase BeanInfo para la clase de argumento MyJavaBean. Esto implica una serie de pasos secuenciales; en cuanto alguno de los pasos es correcto, el introspector deja de buscar. Si algún paso no es correcto, se utiliza el siguiente, para intentar una forma distinta de localizar la información de bean (bean info).
Si se encuentra una clase BeanInfo para la clase, el introspector no la devuelve de forma explícita. En su lugar, utiliza los detalles para crear una clase de resultado temporal que implementa java.beans.BeanInfo.
La mejor manera de comprender la vía de acceso de BeanInfo es considerar la máquina virtual Java (JVM) que se crea para realizar la introspección. A esta máquina virtual se le proporciona una vía de acceso de clases que está compuesta por las entradas siguientes:
Teniendo la máquina virtual creada, java.beans.Introspector tiene su lista de paquetes para la búsqueda de clases BeanInfo establecidas con el método public void setSearchPath(String[]).
Los argumentos de este método son:
Si el bean que se está escribiendo hereda atributos de una superclase, el BeanInfo por omisión no pondrá a disposición los atributos inherentes. Hay que hacerlo de forma explícita con el método getAdditionalBeanInfo().
Por ejemplo:
public BeanInfo[] getAdditionalBeanInfo() { try { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â // A continuación se obtienen todas las características heredadas. Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â return new BeanInfo[] { Introspector.getBeanInfo(MyPanel.class.getSuperclass())}; } catch (IntrospectionException e) { Â Â Â Â Â Â Â Â Â Â return new BeanInfo[0]; Â Â Â Â Â Â Â Â Â Â }
Si no se pone a disposición un atributo inherente, el edito visual no lo procesará, incluso aunque esté establecido en el código fuente.
Clases BeanInfo para clases JRE
Los beans de Java para clases incluidas en el JRE se proporcionan como parte del editor visual para Java. Esto define el comportamiento de clases como javax.swing.JButton o javax.swing.JFrame dentro del entorno de trabajo.Consejos para escribir clases BeanInfo para el editor visual
En este apartado se describen algunas reglas que se pueden emplear si se escribe una clase BeanInfo para un bean de Java que se pretende utilizar en el editor visual para Java.Control de la información de BeanInfo para desarrolladores de conectores (plug-in)
Puede aplicar control sobre la forma en que las clases BeanInfo se asocian a una variable de vía de acceso de clase añadiendo una entrada en un archivo manifest de plug-in.
Tema padre: Ampliación del editor visual
Tareas relacionadas
Control de la información
de BeanInfo para desarrolladores de conectores (plug-in)
Especificación de la
ubicación de las clases BeanInfo