Cuando el usuario actúa sobre un componente -- pulsando el ratón o la tecla Return, por ejemplo -- se crea un objeto Event. El sistema manejador de eventos del AWT pasa el Evento a través del árbol de componentes, dando a cada componente una oportunidad para reaccionar ante el evento antes de que el código dependiente de la plataforma que implementan todos los componentes lo procese.
Cada manejador de eventos de un componente puede reaccionar ante un evento de alguna de estas formas:
Ignorando el evento y permitiendo que pase hacia arriba en el árbol de componentes. Esto es lo que hace la implementación por defecto de la clase Component. Por ejemplo, como la clase TextField y su superclase TextComponent no implementan manejadores de eventos, los Campos de texto obtienen la implementación por defecto de la clase Component. Así cuando un TextField recibe un evento, lo ignora y permite que su contenedor lo maneje.
Mediante la modificación del ejemplar de Event antes de dejarlo subir por el árbol de componentes. Por ejemplo, una sublcase de TextField que muestra todas las letras en mayúsculas podría reaccionar ante la pulsaicón de una letra minúscula cambiando el Event para que contuviera la versión mayúscula de la letra.
Reacionando de alguna otra forma ante el evento. Por ejemplo, una sublcase de TextField (o un contenedor de TextField) podrían reaccionar ante la pulsación de la tecla Return llamando a un método que procese el contenido del campo.
Interceptando el evento, evitando un procesamiento posterior. Por ejemplo, un carácter no válido se ha introducido en un campo de texto, un manejador de eventos podría parar el evento resultante y evitar su propagación. Como resultado, la implementación dependiente de la plataforma del campo de texto nunca vería el evento.
Desde el punto de vista de un Componente, el sistema de manejo de eventos del AWT es como un sistema de filtrado de eventos. El código dependiente de la plataforma genera un evento, pero los Componentes tienen una oportunidad para modificar, reaccionar o interceptar el evento antes de que el código dependiente de la plataforma los procese por completo.
No hay comentarios:
Publicar un comentario