Tema 8. Applets ¿Qué es un applet? Características Métodos de un applet Inclusión de un applet en una página HTML Ejemplo Threads en applets 1 ¿Qué es un applet? Aplicación que se ejecuta en un navegador al cargar una página HTML Los ficheros de Java compilados (*.class) se descargan desde el servidor hasta el navegador en cuya JVM se ejecutan El applet se ejecuta en la ventana del navegador (en un Panel). Los applets tienen importantes restricciones de seguridad Sólo pueden leer y escribir ficheros en el servidor del que provienen 2 Características de un applet Jerarquía de clases: java.lang.Object java.awt.Component java.awt.Container← java.awt.Panel ← java.applet.Applet Todos los applets derivan de java.applet.Applet No tiene un main() con el que comienza la ejecución Debe redefinir métodos heredados de Applet que controlan su ejecución: init(), start(), stop(), destroy() Hereda los métodos gráficos de Component, y la capacidad de añadir componentes de interface de usuario los hereda de Container y de Panel Suele redefinir el método gráfico paint() 3 Métodos de ejecución Los métodos que controlan la ejecución de los applets son llamados por el navegador Método init() Se llama cuando el navegador carga el applet Se ocupa de las tareas de inicialización Método start() Se llama cuando el applet se hace visible después de haber sido inicializado, o tras haber estado oculto Se utiliza para crear threads para determinadas tareas Método stop() Se llama al ocultar el applet Se utiliza para detener threads Método destroy() Se llama cuando el applet va a ser destruido, con la finalidad de que libere recursos 4 Métodos gráficos Un applet es una aplicación gráfica que aparece en una zona de la ventana del navegador Debe redefinir el método gráfico paint(): public void paint(Graphics g) Todo el trabajo gráfico se debe incluir en este método Es llamado al mostrar el applet por 1ª vez y cada vez que hay que redibujarlo Para volver a dibujar el applet se utiliza el método repaint() Este método llama a update(), que borra todo y luego llama a paint() 5 Inclusión de un applet en una página HTML Para incluir un applet en una página HTML se utiliza la etiqueta: <APPLET...>...</APPLET> Forma general: <APPLET CODE = Clase.class WIDTH=pixeles HEIGHT=pixeles [ALT = “texto alternativo”]> [<PARAM NAME=“Parametro1” VALUE=“valor1”] [<PARAM NAME=“Parametro2” VALUE=“valor2”] </APPLET> El valor de los parámetros se obtiene con el método de la clase Applet: String getParameter(String name); 6 Ejemplo (i) import java.awt.*; import java.applet.*; public class EjemploApplet1 extends Applet { private String texto; private Color colorFondo; private Color colorTexto; private Font fuente; public void init() { texto = getParameter("texto"); fuente = new Font("Courier new", Font.BOLD, 14); colorFondo = new Color(255,255,0); colorTexto = new Color(0,0,255); } public void paint(Graphics g) { g.setColor(colorFondo); g.fillRect(0,0,getSize().width,getSize().height); g.setColor(colorTexto); g.setFont(fuente); g.drawString(texto,10,20); } 7 } Ejemplo (ii) EjemploApplet1.html: <APPLET code = EjemploApplet1.class WIDTH=400 HEIGHT=200> <PARAM NAME="texto" VALUE="Primer ejemplo de Applet"> </APPLET> Visualización: 9 appletviewer EjemploApplet1.html 9 navegador 8 Threads en applets import java.awt.*; import java.applet.*; public class AppletThread extends Applet implements Runnable { private Thread hilo = null; public void init(){} public void start() { if(hilo==null){ // crea el hilo hilo=new Thread(this); hilo.start(); // lanza el hilo } } public void run() { Thread hiloActual=Thread.currentThread(); while(hilo==hiloActual){ // tarea repetitiva } } public void stop() { hilo=null; } public void paint(Graphics g){ } } 9