Ciclo de vida de un applet
Como hemos visto, un applet se ejecuta en una página web y ese entorno en
el que está va a determinar el ciclo de vida del mismo. La clase
Applet dispone de varios métodos sin código
dentro a los que llama en diversas fases de su ciclo de vida (al crearse
el applet, al redibujarse, al destruirse...). Si deseamos que nuestro applet
haga cosas especiales en esos momentos deberemos sobreescribir esos
métodos. Son éstos:
- void init()
- Este método se llama al crearse el applet y sólo se ejecuta esa vez. Se
suele utilizar para inicializar variables globales.
- void start()
- Se llama cuando hay que activar el applet. Esto sucede cuando el applet
se ve en la pantalla. Se suele utilizar para comenzar las actividades de
applet, ya que en general éste debe estar visible en la pantalla para poder
realizar su función.
- void stop()
- Es el inverso del anterior. Es llamado cuando el applet deja de estar
visible. Se suele utilizar para interrumpir las actividades activadas en
start().
- void destroy()
- Método llamado al destruirse el applet. Normalmente no se suele
sobreescribir, ya que la destrucción del applet conlleva la destrucción de
todo lo que se ha creado en él. Puede ser útil para mostrar una ventana de
confirmación que pregunte al usuario si de verdad debe cargárselo.
- void repaint()
- Este método no debería ser sobrecargado y es llamado cuando se necesita
redibujar el applet. Podemos llamarlo nosotros desde nuestro código. Llama
a update(Graphics).
- void update(Graphics)
- Llamado por repaint() cuando se necesita
actualizar el applet. Su implementación borra el rectángulo y llama a
paint() para volver a pintarlo.
- void paint(Graphics)
- Método en el que se dibuja el applet y el cual deberemos sobreescribir para
poder dibujar lo que nosotros deseemos..
- void print(Graphics)
- Equivalente a paint() pero es llamado
cuando se va a imprimir el contenido del applet.
El siguiente ejemplo conviene observarlo desde un navegador e ir
viendo los distintos mensajes que nos muestra el applet, para comprender
cuando son llamados los métodos:
CicloDeVida.java
/**
* Applet CicloDeVida
*
* <APPLET CODE="CicloDeVida.class" WIDTH="100" HEIGHT="400"></APPLET>
*/
import java.applet.Applet;
import java.awt.Graphics;
public class CicloDeVida extends Applet {
String mensajes;
public void init() {
mensajes = "Inicializando. ";
}
public void start() {
escribirMensaje("Método start. ");
}
public void stop() {
escribirMensaje("Método stop. ");
}
public void destroy() {
escribirMensaje("Destruyendo Applet. ");
}
void escribirMensaje(String nuevoMensaje) {
mensajes += nuevoMensaje;
repaint();
}
public void paint(Graphics g) {
g.drawString(mensajes, 5, 15);
}
}