Applets Programacion Applets ARQUITECTURA DE APPLETVIEWER Ciclo de

  • Slides: 29
Download presentation
Applets Programacion

Applets Programacion

Applets ARQUITECTURA DE APPLETVIEWER

Applets ARQUITECTURA DE APPLETVIEWER

Ciclo de vida de un Applet • Se crea una instancia de la clase

Ciclo de vida de un Applet • Se crea una instancia de la clase que controla el applet. En el ejemplo de la figura anterior, sería la clase Hola. Mundo. • 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.

METODOS DE APPLETVIEWER init() El método init() se llama cada vez que el appletviewer

METODOS DE APPLETVIEWER init() El método init() se llama cada vez que el appletviewer carga por primera vez la clase. start() es la llamada para arrancar el applet cada vez que es visitado. stop() es la llamada para detener la ejecución del applet. destroy() El método destroy() se llama cuando ya no se va a utilizar más el applet paint( Graphics g ) Es la función llamada cada vez que el área de dibujo del applet necesita ser refrescada. update( Graphics g ) Esta es la función que realmente se llama cuando se necesita una actualización de la pantalla. repaint Llamando a este método se podrá forzar la actualización de un applet

UN APPLET BASICO EN JAVA // Applet Hola. Mundo de ejemplo import java. awt.

UN APPLET BASICO EN JAVA // Applet Hola. Mundo de ejemplo import java. awt. Graphics; import java. applet. Applet; public class Hola. Mundo extends Applet { public void paint( Graphics g ) { g. draw. String( "Hola Mundo!", 25 ) ; } } // // Applet Hola. Mundo de ejemplo // <HTML> <APPLET> <CODE = Hola. Mundo. class WIDTH = 100 HEIGHT = 80> </APPLET> </HTML>

Ejemplos de Applets /* Propósito: Generar seis números aleatorios entre 1 y 51 para

Ejemplos de Applets /* Propósito: Generar seis números aleatorios entre 1 y 51 para una quiniela del melate. * El applet tiene un campo de texto para mostrar los valores y un botón * para ejecutar la acción. Cuando se presiona el botón se generan 6 números aleatorios para * la quiniela. * Nombre: Héctor E. Medellin * Fecha : 7 de febrero de 2006 * Curso de Programación */ import java. applet. *; //necesario para los Applets import java. awt. *; //necesario para manejo de componentes gráficos public class Melate extends Applet{

Miembros dato del Applet Text. Field salida; //lineas de texto para salida Button boton;

Miembros dato del Applet Text. Field salida; //lineas de texto para salida Button boton; //boton para generar quiniela int n 1, n 2, n 3, n 4, n 5, n 6; //números aleatorios public void init(){ //crea objetos gráficos salida = new Text. Field(5); boton = new Button("generar quiniela"); //para colocarlos libremente hay que hacer el esquema nulo set. Layout(null); //establecer dimensiones de las comp. (x, y, ancho, alto) salida. set. Bounds(50, 150, 25); boton. set. Bounds(50, 110, 120, 30); //agregar las componentes gráficas add(salida); add(boton); }

Métodos public void melate(){ n 1 = (int)(Math. random()*51+1); n 2 = (int)(Math. random()*51+1);

Métodos public void melate(){ n 1 = (int)(Math. random()*51+1); n 2 = (int)(Math. random()*51+1); n 3 = (int)(Math. random()*51+1); n 4 = (int)(Math. random()*51+1); n 5 = (int)(Math. random()*51+1); n 6 = (int)(Math. random()*51+1); } public boolean action(Event e, Object o){ if(e. target == boton){//si se preciono el boton melate(); salida. set. Text(""+n 1+", "+n 2+", "+n 3+", "+n 4+", "+n 5+", "+n 6); } return true; } }

Vectores en Pascal Lectura de un vector en Pascal Program Vector; var num, i

Vectores en Pascal Lectura de un vector en Pascal Program Vector; var num, i : integer; vec : array[1. . 10]of integer; Begin readln(num); for i: =1 to num do readln(vec[i]); for i: =1 to num do writeln(vec[i]); End.

Vectores en C Lectura de un vector en C C #include <stdio. h> void

Vectores en C Lectura de un vector en C C #include <stdio. h> void main() { int num, i; int vec[10]; scanf(“%d”, &num); for(i = 0; i<10; i++) scanf(“%d”, &vec[i]); for(i = 0; i<10; i++) printf(“%d”, vec[i]) }

Una aplicación en Java Para la lectura de datos desde la consola es conveniente

Una aplicación en Java Para la lectura de datos desde la consola es conveniente utilizar un paquete. El paquete que utilizamos es javabook que contiene clases para leer números enteros, reales y cadenas. Java import javabook. *; public class Vector{ public static void main(String[] args) { Simple. Input entrada = new Simple. Input(); int vec[], i; vec = new int[10]; // o int vec[] = new int[10]; for(i = 0; i<10; i++) vec[i] = entrada. get. Integer(“Tecle un valor entero: ”); for(i = 0; i<10; i++) System. out. println(“”+vec[i]); } }

Ejemplo de applet con vectores /* Propósito: Generar una quiniela aleatoria de progol. *

Ejemplo de applet con vectores /* Propósito: Generar una quiniela aleatoria de progol. * El applet tiene un boton para ejecutar la acción. * Cuando se presiona el boton se generan la quiniela de progol * Nombre: Héctor E. Medellin * Fecha : 7 de febrero de 2006 * Curso de Programación */ import java. applet. *; //necesario para los Applets import java. awt. *; //necesario para manejho de componentes gráficos public class Progol extends Applet{

Creación de objetos Button boton; //boton para generar quiniela int juego[]; //resultados de la

Creación de objetos Button boton; //boton para generar quiniela int juego[]; //resultados de la quiniela aleatorios public void init(){ //crea objetos gráficos boton = new Button("generar quiniela"); //crear quiniela juego = new int[14]; //para colocarlos libremente hay que hacer el esquema nulo set. Layout(null); //establecer dimensiones de las componentes (x, y, ancho, /// alto) boton. set. Bounds(50, 350, 120, 30); //agregar las componentes gráficas add(boton); }

Métodos public void quiniela(){ int i; for(i = 0; i<14; i++) juego[i] = (int)(Math.

Métodos public void quiniela(){ int i; for(i = 0; i<14; i++) juego[i] = (int)(Math. random()*3); } public boolean action(Event e, Object o){ if(e. target == boton){//si se preciono el boton quiniela(); repaint(); } return true; }

Método paint public void paint(Graphics g){ int i; g. draw. String("Local Empate Visitante", 100,

Método paint public void paint(Graphics g){ int i; g. draw. String("Local Empate Visitante", 100, 30); for(i = 0; i<14; i++){ g. draw. String(""+(i+1), 80, 35+(i+1)*15); if(juego[i]==0) g. fill. Rect(100, 40+i*15, 20, 10); else g. draw. Rect(100, 40+i*15, 20, 10); if(juego[i]==1) g. fill. Rect(150, 40+i*15, 20, 10); else g. draw. Rect(150, 40+i*15, 20, 10); if(juego[i]==2) g. fill. Rect(200, 40+i*15, 20, 10); else g. draw. Rect(200, 40+i*15, 20, 10); } } }

Applet del mcd /* Propósito: calcular el máximo común divisor de dos números utilizando

Applet del mcd /* Propósito: calcular el máximo común divisor de dos números utilizando una función. * El applet tiene tres campos de texto para los valores y el resultado y un boton * para ejecutar la acción. Cuando se presiona el boton se calcula el valor del mcd de los * números tecleados en los dos campos de texto de entrada. * Nombre: Héctor E. Medellin * Fecha : 7 de febrero de 2006 * Curso de Programación */ import java. applet. *; //necesario para los Applets import java. awt. *; //necesario para manejo de componentes gráficos public class Prueba. MCDApplet extends Applet{ Text. Field entrada 1, entrada 2, salida; //lineas de texto para entrada y salida Button boton; //boton para llamar a la funcion Label mcd. Etiqueta; int num 1, num 2, valor; //números tecleados y mdc

Método init() public void init(){ //crea objetos gráficos entrada 1 = new Text. Field(5);

Método init() public void init(){ //crea objetos gráficos entrada 1 = new Text. Field(5); entrada 2 = new Text. Field(5); salida = new Text. Field(5); boton = new Button("calcular mcd"); mcd. Etiqueta = new Label("M. C. D. "); //para colocarlos libremente hay que hacer el esquema nulo set. Layout(null); //establecer dimensiones de las componentes (x, y, ancho, alto) entrada 1. set. Bounds(50, 80, 25); entrada 2. set. Bounds(50, 80, 25); salida. set. Bounds(150, 80, 25); boton. set. Bounds(50, 110, 100, 25); mcd. Etiqueta. set. Bounds(150, 30, 80, 25); //agregar las componentes gráficas add(entrada 1); add(entrada 2); add(salida); add(boton); add(mcd. Etiqueta); }

Método mcd() static public int mcd(int m, int n){ int a, b, res; //

Método mcd() static public int mcd(int m, int n){ int a, b, res; // dtermina cual de los dos números es el mayor if(m>n){ a = m; b = n; } else{ a = n; b = m; } //algoritmo de Euclides para mcd while(b != 0){ res = a%b; a = b; b = res; } return a; }

Método action() public boolean action(Event e, Object o){ if(e. target == boton)//si se preciono

Método action() public boolean action(Event e, Object o){ if(e. target == boton)//si se preciono el boton if(son. Operandos. Validos()){//si los números son válidos valor = mcd(num 1, num 2); salida. set. Text(""+valor); } return true; }

Métodos son. Operandos. Validos() private boolean son. Operandos. Validos(){ boolean b; try{//si alguno de

Métodos son. Operandos. Validos() private boolean son. Operandos. Validos(){ boolean b; try{//si alguno de los números no esta correctamente escrito, //se salta a ejecutar la parte de catch num 1 = Integer. parse. Int(entrada 1. get. Text()); num 2 = Integer. parse. Int(entrada 2. get. Text()); b = true; } catch(Number. Format. Exception e){ b = false; } return b; }

Applet en ejecución

Applet en ejecución

Resumen de Applets Un applet es una aplicación pequeña. Requiere de una clase derivada

Resumen de Applets Un applet es una aplicación pequeña. Requiere de una clase derivada de la clase Applet (hija de Applet). Para visualizar un applet con Applet. Viwerr se requiere un archivo HTM. En el método init() se construyen los objetos del applet. Puede usarse también un constructor. El método paint() se ejecuta cada que se redibuja el applet. El método action() procesa las herramientas visuales que responden a acciones (botones, barras de scroll, campos de texto). Para posicionar componentes libremente (posicionamiento absoluto) se requiere de poner el esquema como null, es decir, incluir en init() set. Layout(null). El posicionamiento se realiza con <objeto>. set. Bounds(x, y, w, h). Se pueden declarar todos los métodos que se requiera dentro de un applet para llevar a cabo su labor.

Constructores y métodos de algunas herramientas Button() – botón sin rótulo Button(String s) –

Constructores y métodos de algunas herramientas Button() – botón sin rótulo Button(String s) – botón con rótulo Text. Field() – sin parámetros Text. Field(int columnas) – número de columnas Text. Field(String s) – texto exhibido Text. Field(String s, int columnas) – texto exhibido y número de columnas set. Editable(boolean b) – establece como editable o no. set. Text(String s) – establece el texto del campo. Choice() – constructor sin parámetros int count. Items() – devuelve el número de elementos del Choice String get. Item(int index) – devuelve el elemento del Choice en la posición index. add. Item(String s) – agrega una opción a un Choice. String get. Selected. Item() – devuelve el elemento de Choice selecionado int get. Selected. Index() – devuelve el indice del elemento de Choice selecionado

Esqueleto de un Applet Comentarios Sentencias import java. applet. *; import java. awt. *;

Esqueleto de un Applet Comentarios Sentencias import java. applet. *; import java. awt. *; public class Nombre del applet extends Applet { Declaraciones de objetos y variables Declaraciones de métodos Métodos }

Actividades Cada problema 0. 5 puntos. En cada caso escriba un archivo HTM. 1.

Actividades Cada problema 0. 5 puntos. En cada caso escriba un archivo HTM. 1. Escriba un applet que incluya un botón (Button) y un campo de texto (Text. Field), cree los objetos en el método init(). Posicione el botón en la coordenada (100, 50) y el campo de texto en la (100, 150). 2. Escriba un applet que dibuje la figura que se muestra. 3. Escriba un applet con un botón que simule una tirada de dados. Los dados deberán tirarse cada que se presiona en botón. Dibuje los dados como se muestra. Escriba un método para dibujar un dado que acepte un número entero, las coordenadas del dado y un objeto Graphics.

Eventos del mouse public boolean mouse. Down(Event e, int x, int y) – ocurre

Eventos del mouse public boolean mouse. Down(Event e, int x, int y) – ocurre cuando se presiona el botón public boolean mouse. Up(Event e, int x, int y) – ocurre cuando se suelta el botón public boolean mouse. Move(Event e, int x, int y) – ocurre cuando se mueve el botón public boolean mouse. Exit(Event e, int x, int y) – ocurre cuando el cursor de mouse sale del área de la componente. public boolean mouse. Enter(Event e, int x, int y) – ocurre cuando el cursor del mouse entra al área de la componente public boolean mouse. Drag(Event e, int x, int y) – ocurre cuando se presiona el botón y se mueve el ratón.

Ejemplo de eventos de mouse import java. applet. *; //necesario para los Applets import

Ejemplo de eventos de mouse import java. applet. *; //necesario para los Applets import java. awt. *; //necesario para manejo de componentes gráficos public class Mover. Mouse extends Applet{ public boolean mouse. Move(Event e, int x, int y){ show. Status("Mouse en ("+x+", "+y+")"); return true; } public boolean mouse. Down(Event e, int x, int y){ show. Status("Se presionó el Mouse en ("+x+", "+y+")"); return true; } }

Arrastre del mouse Es necesario supeditar update() para que no se borre el segundo

Arrastre del mouse Es necesario supeditar update() para que no se borre el segundo plano. import java. applet. *; //necesario para los Applets import java. awt. *; //necesario para manejo de componentes gráficos public class Mover. Drag extends Applet{ int x. Valor, y. Valor; boolean primera. Vez; public void init(){ primera. Vez = true; } public void paint(Graphics g){ if(!primera. Vez)//no dibuja la primera vez g. fill. Oval(x. Valor, y. Valor , 4, 4); } //update normalmente borra el segundo plano public void update(Graphics g){ paint(g); //no borra el segundo plano } public boolean mouse. Drag(Event e, int x, int y){ x. Valor = x; y. Valor = y; primera. Vez = false; repaint(); //llama a repaint show. Status("Evento mouse. Drag"); return true; } }

Eventos del ratón con Handle. Event() import java. applet. *; import java. awt. *;

Eventos del ratón con Handle. Event() import java. applet. *; import java. awt. *; public class Event. Raton extends Applet{ List evento; public void init(){ evento = new List(6, false); add(evento); } public boolean handle. Event(Event e){ switch(e. id){ case Event. MOUSE_UP: evento. add. Item("Ratón arriba"); return true; case Event. MOUSE_DOWN: evento. add. Item("Ratón abajo"); return true; case Event. MOUSE_MOVE: evento. add. Item("Ratón en movimiento"); return true; case Event. MOUSE_ENTER: evento. add. Item("Ratón entra"); return true; case Event. MOUSE_EXIT: evento. add. Item("Ratón sale"); return true; case Event. MOUSE_DRAG: evento. add. Item("Ratón se arrastra"); return true; } show. Status("No es evento de mouse"); return true; } }