## Algunos ejemplos sencillos de Manejo de Eventos

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.

Ozito