Applets Java


En esta p�gina:

  • Eventos

Eventos

La interacci�n con el usuario se obtiene en Java por medio de eventos, como ya fue explicado. Cuando sucede un evento que afecta al applet, la m�quina virtual de Java ejecuta un m�todo que se llama controlador de eventos. En principio esos m�todos no tienen nada, por lo que deberemos sobreescribirlos en funci�n de nuestras necesidades. Esos m�todos son:

boolean mouseDown(Event, int, int)
Llamado cuando pulsamos un bot�n del rat�n; los par�metros segundo y tercero contienen la posici�n del rat�n cuando ocurri� el evento, mientras que el primero en un objeto que contiene informaci�n adicional sobre el mismo.
boolean mouseUp(Event, int, int)
Llamado cuando soltamos el bot�n del rat�n despu�s de haberlo pulsado.
boolean mouseMove (Event, int, int)
Llamado cuando movemos el rat�n.
boolean mouseDrag (Event, int, int)
Llamado cuando movemos el rat�n con un bot�n pulsado.
boolean mouseEnter (Event, int, int)
Llamado cuando el rat�n entra en el applet.
boolean mouseExit (Event, int, int)
Llamado cuando el rat�n abandona el applet.
boolean keyDown(Event,int)
Llamado cuando se pulsa una tecla. El argumento entero indica cu�l.
boolean keyUp(Event, int)
Llamado cuando se suelta una tecla.

Como ejemplo, podemos hacer un ojo que sigue al rat�n:

Ojo.java
/**
 * Applet Ojo
 *
 * <APPLET CODE="Ojo.class" WIDTH="300" HEIGHT="300">
 *   <PARAM NAME="Cadena" VALUE="Esto s� que es chulo">
 * </APPLET>
 */

import java.applet.Applet;
import java.awt.*;

public class Ojo extends Applet {
  int ancho, alto, anchoOjo, altoOjo, anchoPupila, altoPupila;
  int xOjo, yOjo, xPupila, yPupila, xActual, yActual;
  Image buffer;
  Graphics pantallaVirtual;
  public void init() {
    ancho = getBounds().width;
    alto = getBounds().height;
    anchoOjo = ancho / 2;
    altoOjo = alto / 2;
    anchoPupila = anchoOjo / 2;
    altoPupila = altoOjo / 2;
    xOjo = anchoOjo - anchoPupila;
    yOjo = altoOjo - altoPupila;
    xPupila = xOjo + anchoPupila/2;
    yPupila = yOjo + altoPupila/2;
    xActual = xPupila;
    yActual = yPupila;
    buffer = createImage(ancho, alto);
    pantallaVirtual = buffer.getGraphics();
  }
  public void paint(Graphics g) {
    g.setColor(Color.yellow);
    g.fillOval(xOjo, yOjo, anchoOjo, altoOjo);
    g.setColor(Color.black);
    g.fillOval(xActual, yActual, anchoPupila, altoPupila);
  }
  public void update(Graphics g) {
    Color colorTemporal = pantallaVirtual.getColor();
    pantallaVirtual.setColor(Color.white);
    pantallaVirtual.fillRect(0, 0, ancho, alto);
    pantallaVirtual.setColor(colorTemporal);
    paint(pantallaVirtual);
    g.drawImage(buffer, 0, 0, this);
  }
  public boolean mouseMove(Event evt, int x, int y) {
    xActual = (xPupila*21 + x*8)/32;
    yActual = (yPupila*21 + y*8)/32;
    repaint();
    return true;
  }
}

El controlador de evento mouseMove se ejecuta cuando el rat�n se mueve por encima del applet. Es en ese momento cuando se modifica la situaci�n de la pupila del ojo, siguiendo al puntero del rat�n. La "formula", la verdad, est� hallada a ojo, cosa que me pareci� muy natural en este caso. Adem�s, hacerlo bien requerir�a que nos metieramos en asuntos trigonom�tricos, y son asuntos estos muy peliagudos.