 |
Applets Java
En esta página:
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.
|
 |