Swing y JFC (Java Foundation Classes)

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.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR