Algunas de sus características son:Cada acción del usuario sobre la GUI producirá un evento.Un evento será un objeto que representa un mensaje asíncronoque tiene otro objeto como destinatarioetc.
Los eventos se generan en objetos llamados “fuentes” y delegan laresponsabilidad de gestionarlos en otros objetos llamados “oyentes”.El oyente recibe el evento, un objeto que encapsula información: Tipo de evento (e.g. un clic derecho del ratón) Referencia a la fuente del evento (e.g. un botón de “Aceptar”) Instante de tiempo en el que se produjo el evento Posición en pantalla (x, y) asociada al evento, si es que la hay.La fuente notifica sus eventos a todos los oyentes convenientementeregistrados, pero no comprueba qué se hace con ellos ni quien lo hace
GUI
Contiene flexibilidad, lo cual significa que varios objetos de distintas clases puedenregistrarse como oyentes de un mismo tipo de evento
Tambiénrefiere a que varios objetos fuente de distintas clasespueden notificar el mismo tipo de evento
Cada tipo de evento se crea con una clase Java• Algunas clases representan todo un grupo de eventos(e.g. MouseEvent puede representar un “mouse up”,“mouse down”, “mouse drag”, “mouse move”, etc.) En Java existen jerarquías de eventos y deoyentes predefinidas• Raíz de la jerarquía de los eventos:java.util.EventObject Extendiendo esta clase pueden definirse nuevos eventos• Interfaz común para todos los oyentes:java.util.EventListener
A menudo las interfaces de los oyentes agrupan muchos métodos pararesponder a eventos muy distintos• Ejemplo: MouseListener agrupa los métodos para todos los eventos relacionados con el ratón mouseClicked() mouseEntered() mouseExited()
Las GUIs pueden llegar a tener muchos componentes gráficos y eventosposibles, y se necesita una clase diferente para cada oyente• En Swing estos componentes son fuentes, aunque también pueden ser oyentes• Esto obliga a definir muchas clases oyentes, causando confusión al programador La solución en Java es usar clases anidadas (interiores, e incluso anónimas)