En AWT la aplicación se entera de cómo interactúa el usuario con los artefactos a través de eventos.
Un evento es un objeto de la clase Event que indica:
En artefacto se indica el objeto con que interactuó el usuario. Cuando este método retorna false se indica que el evento no pudo ser procesado por este método y que debe ser propagado hacia el contenedor de este artefacto. Esto significa que entonces se invocará el método action del contenedor.class MyButton extends Button { Button(String nombre) { super(nombre); } public boolean action(Event evt, Object artefacto) { ... ; // código de la aplicación return true; } }
En este método se retorna true para que el contenedor no vuelva a procesar el mismo evento. Cuando no se redefine action, el método provisto por Button retorna false y por lo tanto debe ser el contenedor el que procesa el evento.
Por lo tanto la otra forma de recibir eventos es en la raíz. El problema de la raíz es que recibe los eventos de todos los artefactos y por lo tanto hay que comparar el artefacto recibido con cada uno de los artefactos contenidos en la raíz, para poder determinar cuál es la acción que debe llevar a cabo la aplicación.
Por lo tanto otra forma de recibir eventos es:
Existe una última forma no recomendada de captar eventos usando handleEvent. Lo delicado de este método es que recibe todos los eventos, por lo tanto es fácil introducir errores atrapando eventos que deberían procesarse en otro punto en la jerarquía de componentes.class Gui extends Frame // contenedor raíz { ... public boolean action(Event evt, Object art) { if (art==boton) ... else if (art==check) ... else if (art==texto) ... else ... // otro return true; } }