• No se han encontrado resultados

Ciclo de vida de un applet

In document JAVA7 (página 107-110)

Creación de un applet

1. Ciclo de vida de un applet

Cuando el navegador se encarga de un applet, ejecuta ciertos métodos en función de las circunstancias. Se pueden clasificar estos métodos en dos categorías.

métodos relacionados con el ciclo de vida del applet. métodos de gestión del aspecto gráfico del applet.

Para diseñar applets eficaces, se debe entender muy bien cuándo se llaman estos métodos y qué se puede esperar de ellos. La implementación de algunos de estos métodos en la clase Applet está vacía. Por lo tanto es indispensable sustituirlos en nuestra clase derivada.

a. Métodos relacionados con el ciclo de vida del applet

public void init()

Este método se ejecuta desde el final de la carga o de la nueva carga del applet a partir del servidor Web. De hecho es el primer método del applet ejecutado por el navegador. Permite inicializar el contexto en el cual va a funcionar el applet. De hecho se efectúa en este método los tratamientos siguientes:

creación de las instancias de las otras clases útiles para el funcionamiento del applet; inicialización de las variables;

creación de los hilos;

carga de las imágenes utilizadas por el applet;

http://www.eni-training.com/client_net/mediabook.aspx?idR=65890 2/20

import java.applet.Applet; import java.awt.Graphics;

public class TestApplet extends Applet {

private String mensaje=""; public void destroy()

En una aplicación clásica, se suelen ejecutar estas operaciones en el constructor de la clase. public void start()

El navegador llama este método después de la fase de inicialización del applet realizado por el método init. Se le llama también cada vez que el navegador muestra de nuevo la página en la que está insertado. Es, por ejemplo, el caso, si el usuario cambia de página y vuelve luego a la página anterior (la que contiene el applet). También, algunos navegadores vuelven a llamar al método init. Corresponde a la etapa de lanzamiento o de relanzamiento del applet. Encontramos en ella por ejemplo el código que permite lanzar o volver a lanzar los hilos creados en el métodoinit.

public void stop()

Este método se utiliza durante la fase de detención del applet. Esta fase interviene principalmente cuando el usuario cambia de página. También se puede efectuar cuando la ejecución del applet se termina normalmente. En este caso, es el propio applet el que debe llamar a este método. El cierre del navegador provoca también la ejecución de este método justo antes de la llamada del métododestroy.

public void destroy()

Este método es el último del ciclo de vida de un applet. El navegador lo llama justo antes de su cierre. Tiene el mismo papel que el destructor de una clase (método finalize). Se utiliza para eliminar de la memoria los objetos que hayan sido creados durante el funcionamiento del applet y esencialmente los que hayan sido creados durante el curso de la ejecución del método init. La sobrecarga de este método no es obligatoria porque de todas maneras el recolector de basura interviene para liberar los recursos de memoria utilizados por el applet. Por otra parte, no está garantizado que este método se pueda ejecutar completamente antes de que el navegador pare la máquina virtual Java.

b. Métodos de gestión del aspecto gráfico del applet

Hay que contemplar dos supuestos:

Si utilizamos dos componentes gráficos, tales como los disponibles en las bibliotecas awt y swing, lo reflejado por la interfaz del applet se asegura automáticamente. Esta posibilidad procede de las clases presentes en la jerarquía de la clase Applet o JApplet. En este caso, es la clasecontainer, de la cual heredan, entre otros, los applets, quien efectúa este trabajo con el métodopaintComponents.

Si asumimos completamente la representación gráfica del applet, debemos sobrecargar el métodopaint para que sea capaz de gestionar la visualización del applet cada vez que éste deba ser dibujado de nuevo en la página web.

Para visualizar el orden de ejecución de estos diferentes métodos, vamos a escribir nuestro primer applet. Debemos crear una clase que herede de la clase Applet. En esta clase declaramos una variable de tipo String para memorizar los pasos en los diferentes métodos. En el método paint, mostramos la cadena de caracteres en el contexto gráfico del applet.

{

mensaje=mensaje + "método destroy \r\n"; }

public void init() {

mensaje=mensaje + "método init \r\n"; }

public void start() {

mensaje=mensaje + "método start \r\n"; }

public void stop() {

mensaje=mensaje + "método stop \r\n"; }

public void paint(Graphics g) {

mensaje=mensaje + "método paint \r\n"; g.drawString(mensaje, 10, 20);

} }

<html> <head>

<title> primer applet </title> </head>

<body>

<h1>visualización de las llamadas a los métodos de un applet</h1> <applet code="TestApplet"></applet>

</body> </html>

Para comprobar el buen funcionamiento del applet, debemos insertarlo en una página html y visualizar esta última en un navegador o con la herramienta appletViewer del jdk.

La etiqueta <applet> indica al navegador que debe, durante el análisis de la página html, cargar la clase que corresponde al applet cuyo nombre está especificado por el atributo code de la etiqueta. Esta etiqueta dispone de otras posibilidades que se detallarán más abajo en este capítulo.

http://www.eni-training.com/client_net/mediabook.aspx?idR=65890 4/20

Se confirma que el método init primero y luego el método start han sido ejecutados. También parece que al menos otro método ha sido ejecutado, pero no podemos visualizar el texto mostrado en su totalidad. Este problema está relacionado con el hecho de que el navegador reserva un espacio para el applet en el documento. El espacio necesario para la visualización de la cadena es superior a la anchura del applet y, por ello, obtenemos esta visualización truncada. Veremos que podemos actuar en las dimensiones del espacio atribuido al applet en la página html con los atributos height y width de la etiqueta, pero esta solución sólo aplazará el problema porque forzosamente tendremos en algún momento una cadena de caracteres que necesite una anchura más importante que la disponible para el applet. Tenemos que tener más cuidado, durante el diseño del applet, en cuanto a su representación gráfica.

In document JAVA7 (página 107-110)