410 likes | 658 Vues
Applets. Applets. Son aplicaciones que deben ejecutarse bajo un browser que soporte Java. ¿Cómo se carga un Applet?. Capacidades de los Applets. Pueden hacer conexiones de red hacia el host del que vinieron.
E N D
Applets • Son aplicaciones que deben ejecutarse bajo un browser que soporte Java.
Capacidades de los Applets • Pueden hacer conexiones de red hacia el host del que vinieron. • Los applets pueden invocar métodos públicos de otros applets que se encuentren en la misma página web. • Permiten agregar animaciones y sonido a una página web.
¿Que no puede hacer un Applet que es cargado a través de la red? • No puede leer o escribir ficheros en el host en el que se está ejecutando. • No puede hacer conexiones de red, excepto con el host desde el que vino. • No puede arrancar ningún programa en el host donde se está ejecutando. • Los applets que se cargan desde el sistema local de ficheros no tienen ninguna de las restricciones que tienen los applets cargados a través de la red.
Declaración • Todos los applets son subclases de la clase Applet, la cual se encuentra en el paquete: • java.applet • public class suApplet extends java.applet.Applet { //código del Applet. } • import java.applet.*; public class suApplet extends Applet { //código del Applet. }
Métodos de los Applets • init • start • paint • stop • destroy
Ciclo de vida de un Applet • El navegador interpreta la página HTML donde se encuentra insertado el applet. Cuando encuentra la etiqueta <APPLET> el navegador descarga del mismo servidor donde se encontraba la página HTML el bytecode de la clase indicada en la etiqueta <APPLET>. • Se crea una instancia de la clase que controla el applet. • El applet se inicializa (ejecución del método init()). • El applet comienza a ejecutarse (ejecución del método start()). • El applet se visualiza en pantalla (ejecución del método paint()).
Ciclo de vida de un Applet • Cuando se abandona la página, por ejemplo, para visitar un enlace, el applet detiene la ejecución, se ejecuta el método stop. Cuando se regresa a la página que contiene el applet, se ejecuta el método start del applet y se reanuda su ejecución. • Finalmente, cuando se cierra la ventana del navegador, se termina la ejecución del applet, y se liberan todos los recursos ocupados por el applet antes de salir del navegador. • Durante todo el tiempo de vida del applet, éste continuará recibiendo llamadas de métodos por parte del navegador que le irán informando de los distintos eventos que se vayan produciendo (por ejemplo, maximizar y minimizar el navegador, refresco de la pantalla, abandono de la página HTML, etc).
Método init • Este método es llamado una sola vez, cuando el applet es cargado en el browser. • En este método realiza la inicialización de un applet. • También dentro de este método: • Se inicializan las variables del applet. • Se crean los objetos que el applet necesita. • Se cargan imágenes, sonidos o fonts.
Método init • El método init es heredado de la superclase Applet y se redefine (method overriding) si es necesario. • Este método se debe utilizar para realizar las acciones iniciales del applet: inicializar variables, distribuir los compontentes gráficos del applet, etc. • En general, el método init() debería contener el código que se pondría normalmente en un constructor. • La sintaxis del método init es: • public void init( ) { //código }
Método start • El método start es llamado: • Luego de que se termina de ejecutar el método init. • Cuando un usuario vuelve a visitar la página HTML donde está el applet, tras haberla abandonado momentáneamente. • Cuando se minimiza la ventana del navegador y se ejecuta otra tarea, y se vuelve a ejecutar el applet maximizando la ventana del navegador. • Este método puede ser invocado algunas veces durante su ciclo de vida de un applet. • La sintáxis del método start es: • public void start ( ) { //código }
Método paint • Se refiere a como un applet muestra algunas cosas sobre la pantalla, tal como texto, líneas, color de fondo o una imagen. • El método paint puede ser invocado varias veces durante el ciclo de vida de un applet. Por ejemplo, cuando la ventana de la página web ha sido tapada por otra ventana, o porque se ha restaurado su tamaño. • La sintaxis del método paint es la siguiente: • public void paint (Graphics g) { //código } • Usted debería incluir la sentencia: • import java.awt.Graphics;
Método paint • También es llamado, cada vez que un applet necesita ser pintado nuevamente. • Las acciones que se realizan en este método tienen que ver con el dibujo del objeto gráfico g que es automáticamente pasado como parámetro. • Este método es heredado de la clase java.awt.Container.
Método stop • Detiene la ejecución de un applet. • Es llamado, cuando una página web contiene este applet ha sido reemplazada por otra página y también justo antes del método destroy. • La sintáxis de este método es la siguiente. • public void stop ( ) { //código }
Método destroy • Este método es llamado cuando el Applet está siendo removido de memoria. • Este método realiza las tareas que son necesarias para liberar todos los recursos que esté usando el applet. • La mayoría de los applets no necesitan sobrescribir el método destroy(), porque su método stop() (al que se llama antes) hace todo lo necesario para detener la ejecución del applet. Sin embargo, el método destroy() esta disponible para los applets que necesitan liberar recursos adicionales asignados. • La sintaxis de este método es la siguiente: • public void destroy ( ) { //código }
Otros métodos: update • Esta es la función que realmente se llama cuando se necesita una actualización de la pantalla (en lugar de llamar directamente a la función paint()). • La clase Applet simplemente limpia el área y llama al método paint(). • Las clases derivadas pueden sustituir esta funcionalidad para sus propósitos. • La sintáxis de este método es la siguiente: public void update (Graphics g) { //código }
Otros métodos: repaint • A esta función se la debería llamar cuando el applet necesite ser repintado. • Llamando a este método se podrá forzar la actualización del applet. • Este es el método que habitualmente invocan los programadores de applets para refrescar el contenido del applet en pantalla. • Al llamar al método repaint(), internamente se llama a update() que borrará el rectángulo sobre el que se redibujará y luego a su vez llamará a paint(). • La sintáxis de este método es la siguiente: public void repaint ( ) { //código }
Etiqueta APPLET • APPLET [CODEBASE = codebaseURL] CODE = appletFile WIDTH = pixels HEIGHT = pixels • <APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25> </APPLET>
Creando su primer Applet import java.applet.*; import java.awt.*; public class HelloWorld extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 50, 25); } } • Guardar este código en un archivo con nombre HelloWorld.java
Página HTML que llamará al Applet. <HTML> <HEAD> <TITLE>Un Programa Simple</TITLE> </HEAD> <BODY> Este es el output de mi programa: <APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25> </APPLET> </BODY> </HTML> • Guardar este código en un archivo con nombre HelloWorld.html
Compilar el archivo fuente HelloWorld.java: javac HelloWorld.java • Ejecutar el siguiente comando: appletviewer HelloWorld.html • Se obtiene el siguiente resultado:
Pasándo parámetros a Applets <APPLET CODE=“QueenMab.class” WIDTH=100 HEIGHT=100> <PARAM NAME=nombreparametro VALUE=“valordelparametro”> <PARAM NAME=size VALUE=“24”> </APPLET>
Pasando parámetros a Applets • Los parámetros son pasados a su applet cuando este es cargado. • Dentro del método init () recupere estos parámetros usando getParameter(). Ejmp: • String theFontName = getParameter (“font”); • Si el parámetro que usted espera no ha sido especificado en el archivo HTML, getParameter retorna nulo. • Ver: EjemploParametro.java y EjemploParametroPage.html.
Como invocar un Applet empaquetado en un archivo JAR <applet code=NombreClaseAppletPrincipal.class archive =“NombredelJar.jar” width=ancho height=alto> </applet> Ejemplo: <applet code=“Animator.class” archive="classes.jar" width=460 height=160> <param name=foo value="bar"> </applet>
La Clase Color • Sistema RGB (Red Green Blue) • Cada componente es representado con un entero de 0 a 255. • Para setear los colores: • g.setColor(Color.pink); • Color brush = new Color (255,204,102); g.setColor (brush);
Algunos colores • black (0,0,0) • white (255,255,255) • blue (0,0,255) • yellow (255,255,0) • magenta (255,0,255)
La clase Font Font f = new Font(“Dialog”, Font.BOLD + Font.ITALIC,24); public void paint (Graphics screen) { Font f= new Font(“TimesRoman”, Font.PLAIN,72); screen.setFont(f); screen.drawString(“HOLA”,10,100); } Ver DemoFont.java y DemoFont.html
clase FontMetrics • public int getAscent() • public int getDescent() • public int getLeading() • public int getHeight() • public int stringWidth(String str)
La clase Graphics • Es parte del paquete java.awt • Le permite dibujar texto, líneas, óvalos, círculos, rectángulos y otros polígonos. • Todos los métodos que permiten dibujar serán llamados desde el método paint( ). • La forma como los distintos sistemas operativos generan los gráficos es diferente, la clase Graphics, provee la interfase para permitirnos hacer programas que generen gráficos independientes de la plataforma.
Sistema de coordenadas +x 0,0 (x,y) +y
Líneas drawLine(x1,//coordenada x del primer punto. y1, //coordenada y del primer punto. x2, //coordena x del segundo punto. y2); //coordenada y del segundo punto. Ver: Line.html y Line.java
Rectángulos drawRect(x, //coordenada x de la esquina superior izquierda y, //coordenada y de la esquina superior izquierda ancho, alto); fillRect(x,y,ancho,alto); drawRoundRect (x, y, ancho, alto,anchoarco,altoarco); fillRoundRect(x, y, ancho, alto,anchoarco,altoarco); (x,y)
Ovalos • drawOval (x,y,ancho,alto); • Ver DrawOval.java, DrawOval.html (x,y)
Arcos • drawArc(x,y,ancho,alto,ángulo inicial,ángulo del arco) • Ver DrawArcs.java, DrawArcs.html
Polígonos drawPolygon (xPoints[], //coordenadas x yPoints[], //coordenadas y points ) //número de puntos. fillPolygon(xPoints[], //coordenadas x yPoints[], //coordenadas y points ) //número de puntos. Ver DrawPoly.html y DrawPoly.java
Dibujando Strings y Characters • public abstract void drawString ( String string, //El string a ser dibujado int x, //La coordenada x int y); //La coordenada y • public void drawChars ( char chars [], //arreglo de caracteres a dibujar int offset, //indice desde donde se va a dibujar int number, // número de elementos a dibujar int x, //La coordenada x int y ); //La coordenada y Ver: DrawSC.java
Ejercicio en clase • Hacer un applet, que muestre 10 rectángulos (Ver figura de ejemplo), el primer rectángulo tendrá un color azul oscuro y el último rectángulo, tendrá un color azul más claro.