Una de las principales características de un componente es que una vez instalado en un entorno de desarrollo, éste debe ser capaz de identificar sus propiedades simplemente detectando parejas de operaciones get/ set, mediante la capacidad denominada introspección.
El entorno de desarrollo podrá editar automáticamente cualquier propiedad de los tipos básicos o de las clases Color
y Font
. Aunque no podrá hacerlo si el tipo de datos de la propiedad es algo más complejo, por ejemplo, si usamos otra clase, como Cliente. Para poder hacerlo tendremos que crear nuestro propio editor de propiedades.
Un editor de propiedad es una herramienta para personalizar un tipo de propiedad en particular. Los editores de propiedades se utilizan en la ventana Propiedades, que es donde se determina el tipo de la propiedad, se busca de un editor de propiedades apropiado, y se muestra el valor actual de la propiedad de una manera apropiada.
La creación de un editor de propiedades usando tecnología Java supone programar una clase que implemente la interfaz PropertyEditor
, que proporciona métodos para especificar cómo se debe mostrar una propiedad en la hoja de propiedades. Su nombre debe ser el nombre de la propiedad seguido de la palabra Editor:
public Editor implements PropertyEditor {…}
Por defecto la clase PropertyEditorSupport
que implementa PropertyEditor
proporciona los editores más comúnmente empleados, incluyendo los mencionados tipos básicos, Color
y Font
.
Una vez que tengamos todos los editores, tendremos que empaquetar las clases con el componente para que use el editor que hemos creado cada vez que necesite editar la propiedad. Así, conseguimos que cuando se añada un componente en un panel y lo seleccionemos, aparezca una hoja de propiedades, con la lista de las propiedades del componente y sus editores asociados para cada una de ellas. El IDE llama a los métodos getters, para mostrar en los editores los valores de las propiedades. Si se cambia el valor de una propiedad, se llama al método setter, para actualizar el valor de dicha propiedad, lo que puede o no afectar al aspecto visual del componente en el momento del diseño.