Aqu� un applet que ilustra el manejo de eventos. S�lo contiene un bot�n que pita cuando se pulsa sobre �l.
Esta es una imagen del GUI del applet. Para ejecutar el applet pulsa sobre la imagen. El applet aparecer� en una nueva ventana del navegador.
Puedes encontrar el programa completo en Beeper.java. Aqu� est� el c�digo que implementa el manejo de eventos del bot�n.
public class Beeper ... implements ActionListener { ... //where initialization occurs: button.addActionListener(this); ... public void actionPerformed(ActionEvent e) { ./Make a beep sound... } }
�No es sencillo? La clase Beeper implementa el interface ActionListener, que contiene un m�todo: actionPerformed. Como Beeper implementa ActionListener, un objeto Beeper puede registrar un oyente para los eventos action que genere el bot�n. Una vez que Beeper ha sido registrado usando el m�todo addActionListener de Button, cada que se pulse el bot�n se llamar� al m�todo actionPerformed de Beeper.
�Un ejemplo m�s complejo
El modelo de eventos, que hemos visto en su forma m�s simple en el ejemplo anterior, es bastante poderoso y flexible. Cualquier n�mero de objetos oyentes de eventos puede escuchar todas las clases de eventos desde cualquier n�mero de objetos fuentes de eventos. Por ejmplo, un programa podr�a crear un oyente por cada objeto fuente. O un programa podr�a crear un s�lo oyente para todos los eventos para todas las fuentes. Incluso un programa puede tener m�s de un oyente para una s�la clase de evento de una sola fuente de eventos.
El siguiente applet ofrece un ejemplo de uso de m�ltiples oyentes por objeto. El applet contiene dos fuentes de eventos (ejemplares de JButton) y dos oyentes de eventos. Uno de los oyentes (un ejemplar de la clase llamada MultiListener) escucha los eventos de los dos botones. Cuando recibe un evento, a�ade el evento "action command" (el texto de la etiqueta del bot�n) en la parte superior del �rea de texto. El segundo oyente (un ejemplar de la clase llamada Eavesdropper) esucha los eventos de uno de los botones. Cuando recibe un evento, a�ade el action command en la parte inferior del �rea de texto.
Esta es una imagen del GUI del applet. Para ejecutar el applet pulsa sobre la imagen. El applet aparecer� en una nueva ventana del navegador.
Puedes encontrar el programa completo en MultiListener.java. Aqu� s�lo tenemos el c�digo que implementa el manejo de eventos de los botones.
public class MultiListener ... implements ActionListener { ... //where initialization occurs: button1.addActionListener(this); button2.addActionListener(this); button2.addActionListener(new Eavesdropper(bottomTextArea)); } public void actionPerformed(ActionEvent e) { topTextArea.append(e.getActionCommand() + newline); } } class Eavesdropper implements ActionListener { ... public void actionPerformed(ActionEvent e) { myTextArea.append(e.getActionCommand() + newline); } }
En el c�digo anterior, tanto MultiListener como Eavesdropper implementan el interface ActionListener y se registran c�mo oyentes de action usando el m�todo addActionListener de JButton. L�s implementaciones que ambas clases hacen del m�todo actionPerformed son similares: simplemente a�aden el action command del evento al �rea de texto.
�Un Ejemplo de Manejo de Otro Tipo de Evento
Hasta ahora, la �nica clase de eventos que hemos visto son los eventos action. Echemos un vistazo a un programa que maneja otros tipos de eventos: eventos del rat�n.
El siguiente applet muestra un �rea rectangular y un �rea de texto, cuando ocurre un evento del rat�n -- una pulsaci�n, liberaci�n, entrar o salir -- dentro del �rea rectangular (BlankArea) o su contenedor (MouseEventDemo), el �rea de texto mostrar� una cadena describiendo el evento.
Esta es una imagen del GUI del applet. Para ejecutar el applet pulsa sobre la imagen. El applet aparecer� en una nueva ventana del navegador.
Puedes encontrar el programa completo en MouseEventDemo.java y BlankArea.java. Aqu� s�lo tenemos el c�digo que implementa el manejo de eventos.
public class MouseEventDemo ... implements MouseListener { ... //where initialization occurs: //Register for mouse events on blankArea and applet blankArea.addMouseListener(this); addMouseListener(this); } public void mousePressed(MouseEvent e) { saySomething("Mouse pressed; # of clicks: " + e.getClickCount(), e); } public void mouseReleased(MouseEvent e) { saySomething("Mouse released; # of clicks: " + e.getClickCount(), e); } public void mouseEntered(MouseEvent e) { saySomething("Mouse entered", e); } public void mouseExited(MouseEvent e) { saySomething("Mouse exited", e); } public void mouseClicked(MouseEvent e) { saySomething("Mouse clicked (# of clicks: " + e.getClickCount() + ")", e); } void saySomething(String eventDescription, MouseEvent e) { textArea.append(eventDescription + " detected on " + e.getComponent().getClass().getName() + "." + newline); } }
Podr�s ver el c�digo explicado en C�mo Escribir un Oyente de Rat�n, m�s adelante en esta secci�n.