-Se crea una instancia de la clase que controla el applet. En el ejemplo
primer ejemplo , sería la clase HolaMundo.
-El applet se incializa.
-El applet comienza a ejecutarse.
-El applet empieza a recibir llamadas. Primero recibe una llamada init
(inicializar), seguida de un mensaje start (empezar) y paint (pintar).
Estas llamadas pueden ser recibidas asíncronamente.
Las actividades mas importantes son:
Para escribir applets Java, hay que utilizar una serie de métodos, algunos de los cuales ya se hay sumariado . Incluso para el applet más sencillo necesitaremos varios métodos. Son los que se usan para arrancar (start) y detener (stop) la ejecución del applet, para pintar (paint) y actualizar (update) la pantalla y para capturar la información que se pasa al applet desde el fichero HTML a través de la marca APPLET.
init()
Esta función miembro es llamada al crearse el applet. Es llamada
sólo una vez. La clase Applet no hace nada en init(). Las clases
derivadas deben sobrecargar este método para cambiar el tamaño
durante su inicialización, y cualquier otra inicialización
de los datos que solamente deba realizarse una vez. Deberían realizarse
al menos las siguientes acciones:
Carga de imágenes y sonido
El resize del applet para que tenga su tamaño correcto
Asignación de valores a las variables globales
Por ejemplo:
public void init() {
if( width < 200
|| height < 200 )
resize( 200,200 );
valor_global1 = 0;
valor_global2 = 100;
// cargaremos imágenes
en memoria sin mostrarlas
// cargaremos música
de fondo en memoria sin reproducirla
}
destroy()
Esta función miembro es llamada cuando el applet no se va a
usar más. La clase Applet no hace nada en este método. Las
clases derivadas deberían sobrecargarlo para hacer una limpieza
final. Los applet multithread deberán usar destroy() para "matar"
cuanquier thread del applet que quedase activo.
start()
Llamada para activar el applet. Esta función miembro es llamada
cuando se visita el applet. La clase Applet no hace nada en este método.
Las clases derivadas deberían sobrecargarlo para comenzar una animación,
sonido, etc.
public void start() {
estaDetenido = false;
// comenzar la reproducción
de la música
musicClip.play();
}
También se puede utilizar start() para eliminar cualquier thread que se necesite.
stop()
Llamada para detener el applet. Se llama cuando el applet desaparece
de la pantalla. La clase Applet no hace nada en este método. Las
clases derivadas deberían sobrecargarlo para detener la animación,
el sonido, etc.
public void stop() {
estaDetenido = true;
if( /* ¿se está
reproduciendo música? */ )
musicClip.stop();
}
resize( int width,int height )
El método init() debería llamar a esta función
miembro para establecer el tamaño del applet. Puede utilizar las
variables ancho y alto, pero no es necesario. Cambiar el tamaño
en otro sitio que no sea init() produce un reformateo de todo el documento
y no se recomienda.
En el navegador Netscape, el tamaño del applet es el que se indica en la marca APPLET del HTML, no hace caso a lo que se indique desde el código Java del applet.
width
Variable entera, su valor es el ancho definido en el parámetro
WIDTH de la marca HTML del APPLET. Por defecto es el ancho del icono.
height
Variable entera, su valor es la altura definida en el parámetro
HEIGHT de la marca HTML del APPLET. Por defecto es la altura del icono.
Tanto width como height están siempre disponibles para que se puede
chequear el tamaño del applet.
Podemos retomar el ejemplo de init():
public void init() {
if( width < 200
|| height < 200 )
resize( 200,200 );
...
paint( Graphics g )
Se llama cada vez que se necesita refrescar el área de dibujo
del applet. La clase Applet simplemente dibuja una caja con sombreado de
tres dimensiones en el área. Obviamente, la clase derivada debería
sobrecargar este método para representar algo inteligente en la
pantalla.
Para repintar toda la pantalla cuando llega un evento Paint, se pide el rectángulo sobre el que se va a aplicar paint() y si es más pequeño que el tamaño real del applet se invoca a repaint(), que como va a hacer un update(), se actualizará toda la pantalla.
Podemos utilizar paint() para imprimir nuestro mensaje de bienvenida:
void public paint( Graphics g ) {
g.drawString( "Hola Java!",25,25
);
// Dibujaremos la imágenes
que necesitemos
}
update( Graphics g )
Esta es la función que se llama realmente cuando se necesita
actualizar la pantalla. La clase Applet simplemente limpia el área
y llama al método paint(). Esta funcionalidad es suficiente en la
mayoría de los casos. De cualquier forma, las clases derivadas pueden
sustituir esta funcionalidad para sus propósitos.
Podemos, por ejemplo, utilizar update() para modificar selectivamente partes del área gráfica sin tener que pintar el área completa:
public void update( Graphics g ) {
if( estaActualizado )
{
g.clear(); // garantiza la pantalla limpia
repaint(); // podemos usar el método padre: super.update()
}
else
// Información adicional
g.drawString( "Otra información",25,50 );
}
repaint()
A esta función se la debería llamar cuando el applet
necesite ser repintado. No debería sobrecargarse, sino dejar que
Java repinte completamente el contenido del applet.
Al llamar a repaint(), sin parámetros, internamente se llama a update() que borrará el rectángulo sobre el que se redibujará y luego se llama a paint(). Como a repaint() se le pueden pasar parámetros, se puede modificar el rectángulo a repintar.
getParameter( String attr )
Este método carga los valores parados al applet vía la
marca APPLET de HTML. El argumento String es el nombre del parámetro
que se quiere obtener. Devuelve el valor que se le haya asignado al parámetro;
en caso de que no se le haya asignado ninguno, devolverá null.
Para usar getParameter(), se define una cadena genérica. Una vez que se ha capturado el parámetro, se utilizan métodos de cadena o de números para convertir el valor obtenido al tipo adecuado.
public void init() {
String pv;
pv = getParameter( "velocidad"
);
if( pv == null )
velocidad = 10;
else
velocidad = Integer.parseInt( pv );
}
getDocumentBase()
Indica la ruta http, o el directorio del disco, de donde se ha recogido
la página HTML que contiene el applet, es decir, el lugar donde
está la hoja en todo Internet o en el disco.
getCodeBase()
Indica la ruta http, o el directorio del disco, de donde se ha cargado
el código bytecode que forma el applet, es decir, el lugar donde
está el fichero .class en todo Internet o en el disco.
print( Graphics g )
Para imprimir en impresora, al igual que paint() se puede utilizar
print(), que pintará en la impresora el mapa de bits del dibujo.