Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

29
Applets Programacion

Transcript of Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Page 1: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Applets

Programacion

Page 2: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

AppletsARQUITECTURA DE APPLETVIEWER

Page 3: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

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 HolaMundo.

•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.

Page 4: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

METODOS DE APPLETVIEWER

init() El método init() se llama cada vez que el appletviewer carga por primera vez la clase.

start() start() es la llamada para arrancar el applet cada vez que es visitado.

stop() 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

Page 5: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

UN APPLET BASICO EN JAVA // Applet HolaMundo de ejemploimport java.awt.Graphics;import java.applet.Applet;public class HolaMundo extends Applet { public void paint( Graphics g ) { g.drawString( "Hola Mundo!",25,25 ) ; }}

//// Applet HolaMundo de ejemplo//<HTML><APPLET><CODE = HolaMundo.class WIDTH = 100 HEIGHT = 80></APPLET></HTML>

Page 6: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

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 Appletsimport java.awt.*;//necesario para manejo de componentes gráficospublic class Melate extends Applet{

Page 7: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Miembros dato del Applet

TextField salida; //lineas de texto para salidaButton boton; //boton para generar quinielaint n1,n2,n3,n4,n5,n6;//números aleatoriospublic void init(){//crea objetos gráficos salida = new TextField(5); boton = new Button("generar quiniela");//para colocarlos libremente hay que hacer el esquema nulo setLayout(null);//establecer dimensiones de las comp. (x,y,ancho,alto) salida.setBounds(50,50,150,25); boton.setBounds(50,110,120,30); //agregar las componentes gráficas add(salida); add(boton);}

Page 8: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Métodospublic void melate(){ n1 = (int)(Math.random()*51+1); n2 = (int)(Math.random()*51+1); n3 = (int)(Math.random()*51+1); n4 = (int)(Math.random()*51+1); n5 = (int)(Math.random()*51+1); n6 = (int)(Math.random()*51+1);}public boolean action(Event e, Object o){ if(e.target == boton){//si se preciono el boton melate(); salida.setText(""+n1+", "+n2+", "+n3+", "+n4+", "+n5+", "+n6); } return true;}

}

Page 9: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Vectores en Pascal

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.

Lectura de un vector en Pascal

Page 10: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Vectores 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])}

Lectura de un vector en C

Page 11: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Una aplicación en Java

Java

import javabook.*;public class Vector{ public static void main(String[] args) { SimpleInput entrada = new SimpleInput(); int vec[],i; vec = new int[10];// o int vec[] = new int[10]; for(i = 0; i<10; i++) vec[i] = entrada.getInteger(“Tecle un valor entero:”); for(i = 0; i<10; i++) System.out.println(“”+vec[i]); }}

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.

Page 12: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

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 Appletsimport java.awt.*; //necesario para manejho de componentes gráficospublic class Progol extends Applet{

Page 13: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Creación de objetosButton boton; //boton para generar quinielaint juego[]; //resultados de la quiniela aleatoriospublic 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 setLayout(null); //establecer dimensiones de las componentes (x,y,ancho, /// alto) boton.setBounds(50,350,120,30); //agregar las componentes gráficas add(boton);}

Page 14: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

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;}

Page 15: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

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

Page 16: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

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 Appletsimport java.awt.*; //necesario para manejo de componentes gráficospublic class PruebaMCDApplet extends Applet{ TextField entrada1,entrada2,salida; //lineas de texto para entrada y salida Button boton; //boton para llamar a la funcion Label mcdEtiqueta; int num1,num2,valor; //números tecleados y mdc

Page 17: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Método init()public void init(){ //crea objetos gráficos entrada1 = new TextField(5); entrada2 = new TextField(5); salida = new TextField(5); boton = new Button("calcular mcd"); mcdEtiqueta = new Label("M.C.D.");//para colocarlos libremente hay que hacer el esquema nulo setLayout(null);//establecer dimensiones de las componentes (x, y, ancho, alto) entrada1.setBounds(50,50,80,25); entrada2.setBounds(50,80,80,25); salida.setBounds(150,50,80,25); boton.setBounds(50,110,100,25); mcdEtiqueta.setBounds(150,30,80,25); //agregar las componentes gráficas add(entrada1); add(entrada2); add(salida); add(boton); add(mcdEtiqueta);

}

Page 18: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

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;}

Page 19: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Método action()

public boolean action(Event e, Object o){ if(e.target == boton)//si se preciono el boton if(sonOperandosValidos()){//si los números son válidos valor = mcd(num1,num2); salida.setText(""+valor); } return true;}

Page 20: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Métodos sonOperandosValidos()

private boolean sonOperandosValidos(){ boolean b; try{//si alguno de los números no esta correctamente escrito, //se salta a ejecutar la parte de catch num1 = Integer.parseInt(entrada1.getText()); num2 = Integer.parseInt(entrada2.getText()); b = true; } catch(NumberFormatException e){ b = false; } return b;}

Page 21: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Applet en ejecución

Page 22: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

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 AppletViwerr 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() setLayout(null). El posicionamiento se realiza con <objeto>.setBounds(x,y,w,h).

Se pueden declarar todos los métodos que se requiera dentro de un applet para llevar a cabo su labor.

Page 23: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Constructores y métodos de algunas herramientas

Button

Button() – botón sin rótuloButton(String s) – botón con rótulo

TextField

TextField() – sin parámetrosTextField(int columnas) – número de columnasTextField(String s) – texto exhibidoTextField(String s, int columnas) – texto exhibido y número de columnassetEditable(boolean b) – establece como editable o no.setText(String s) – establece el texto del campo.

Choice

Choice() – constructor sin parámetrosint countItems() – devuelve el número de elementos del ChoiceString getItem(int index) – devuelve el elemento del Choice en la posición index.addItem(String s) – agrega una opción a un Choice.String getSelectedItem() – devuelve el elemento de Choice selecionadoint getSelectedIndex() – devuelve el indice del elemento de Choice selecionado

Page 24: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Esqueleto de un Applet

import java.applet.*;import java.awt.*;

public class extends Applet {

Declaraciones de objetos y variables

}

Declaraciones de métodos

Sentencias import

Comentarios

Nombre del applet

Declaraciones

Métodos

Page 25: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

ActividadesCada 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 (TextField), 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.

Page 26: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Eventos del mousepublic boolean mouseDown(Event e, int x, int y) – ocurre cuando se presiona el botón

public boolean mouseUp(Event e, int x, int y) – ocurre cuando se suelta el botón

public boolean mouseMove(Event e, int x, int y) – ocurre cuando se mueve el botón

public boolean mouseExit(Event e, int x, int y) – ocurre cuando el cursor de mouse sale del área de la componente.

public boolean mouseEnter(Event e, int x, int y) – ocurre cuando el cursor del mouse entra al área de la componente

public boolean mouseDrag(Event e, int x, int y) – ocurre cuando se presiona el botón y se mueve el ratón.

Page 27: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Ejemplo de eventos de mouse

import java.applet.*;//necesario para los Appletsimport java.awt.*;//necesario para manejo de componentes gráficospublic class MoverMouse extends Applet{

public boolean mouseMove(Event e, int x, int y){ showStatus("Mouse en ("+x+","+y+")"); return true; } public boolean mouseDown(Event e, int x, int y){ showStatus("Se presionó el Mouse en ("+x+","+y+")"); return true; }}

Page 28: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

Arrastre del mouse

import java.applet.*;//necesario para los Appletsimport java.awt.*; //necesario para manejo de componentes gráficospublic class MoverDrag extends Applet{

int xValor, yValor;boolean primeraVez;public void init(){

primeraVez = true;}public void paint(Graphics g){

if(!primeraVez)//no dibuja la primera vezg.fillOval(xValor,yValor,4,4);

}//update normalmente borra el segundo planopublic void update(Graphics g){

paint(g);//no borra el segundo plano}public boolean mouseDrag(Event e, int x, int y){

xValor = x; yValor = y;primeraVez = false;repaint();//llama a repaintshowStatus("Evento mouseDrag");return true;

}

}

Es necesario supeditar update() para que no se borre el segundo plano.

Page 29: Applets Programacion. Applets ARQUITECTURA DE APPLETVIEWER.

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