Componentes Java
En esta unidad se revisan qué son los componentes y cómo crearlos.
Concepto de componente
Cuando diseñamos aplicaciones diseñamos y creamos interfaces (elemento fundamental) para que el usuario puede interactuar con la aplicación. Estas interfaces son construidas utilizando organizadores de aspecto (layouts) y componentes/controles.
Un componente es una pieza de hardware o software pequeña, que tiene un comportamiento específico (que se define por los eventos ante los que responde) y dispone de una interfaz que permite que se inserte fácilmente.
Es una clase creada para ser reutilizada y que puede ser manipulada por una herramienta de desarrollo de aplicaciones visual. Se define por su estado que se almacena en un conjunto de propiedades, las cuales pueden ser modificadas para adaptar el componente al programa en el que se inserte. También tiene un comportamiento que se define por los eventos ante los que responde y los métodos que ejecuta ante dichos eventos.
Para que esta pequeña pieza pueda ser distribuida se empaqueta con todo lo necesario para su correcto funcionamiento, quedando independiente de otras bibliotecas o componentes
Para que una clase sea considerada un componente debe cumplir lo siguiente:
- Poder modificarse para adaptarse a la aplicación en laque se integra
- Tener persistencia, es decir, poder guardar el estado de sus propiedades cuando sean modificadas
- Tener introspección, es decir, permitir a un IDE que pueda reconocer ciertos elementos de diseño como los nombres de las funciones miembro o métodos y definiciones de clases y devolver esa información
- Poder gestionar eventos
Ventajas
Ventajas del desarrollo basado en Componentes:
- Desarrollo mucho más sencillo, se emplea menos tiempo y el coste es inferior
- Se disminuyen los errores de software, ya que los componentes se deben testear y someter a un riguroso control de calidad.
Ya has creado varias interfaces gráficas de usuario GUIs haciendo uso de algún IDE (eclipse) Has seleccionado controles UI y posicionado estos en el layout (organizador de aspecto). Todos estos UI son componentes (elementos reutilizables, probados y que han superado los controles de calidad) que son utilizados por una herramienta de desarrollo visual.
Elementos de un componente
Como hemos dicho antes, un componente es una clase que vamos a tratar de una forma un poco diferente. Conjunto de atributos y de métodos. El componente tendrá definido un estado a partir de un conjunto de atributos
Las propiedades son un tipo específico de atributos que representan características de un componente que afectan a su apariencia o a su comportamiento. Son accesibles desde fuera de la clase y forman parte de su interfaz. Suelen estar asociadas a un atributo interno.
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.
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 un editor de propiedades apropiado, y se muestra el valor actual de la propiedad de una manera adecuada a la clase.
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<Propiedad> Editor implements PropertyEditor{…}
Por defecto la clase PropertyEditorSupport que implementa PropertyEditor proporciona los editores más comúnmente empleados, incluyendo los tipos básicos, Color y Font.
Los pasos básicos para crear un componente con un editor de propiedades consisten en:
- Crear una clase que extienda a PropertyEditorSupport.
- Añadir los métodos getAsText y setAstext, que transformarán el tipo de dato de la propiedad en cadena de caracteres o viceversa.
- Añadir el resto de métodos necesarios para la clase.
- Asociar el editor de propiedades a la propiedad en cuestión