martes, 23 de noviembre de 2010

APPLETS

APPLETS

Que es un applet ?

Un applet es una miniaplicacion, escrita en java que se ejecuta en un browser(navegador) al cargar una pagina HTML que incluye información sobre el applet a ejecutar por medio de las tags .

Implementar Métodos applet

El applet Hola Mundo sólo implementa un método, el método paint.

Cada applet debe implementar, al menos, uno de los siguientes métodos:

public class Simple extends Applet {

. . .

public void init() { . . . }

public void start() { . . . }

public void stop() { . . . }

public void destroy() { . . . }

. . .

}

Métodos

init() :

Para inicializar el applet cada vez que se carga.

start() :

Para iniciar la ejecución del applet, una vez cargado el applet o cuando el

usuario vuelve a visitar la página que contiene el applet.

stop() :

Para parar la ejecución del applet, cuando el usuario abandona la página o

sale del navegador.

destroy() :

Realiza una limpieza final para preparar la descarga.

Threads o hilos de ejecucion

Es una característica que permite a una aplicación realizar varias tareas a la vez Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.

Un hilo es básicamente una tarea que puede ser ejecutada en paralelo con otra tarea.

La principal utilización de thread en un programa es para el aislamiento y sincronización de tareas.

Clase thread

La forma más directa para hacer un programa multi-thread es extender la clase Thread, y redefinir el método run(). Este método es invocado cuando se inicia el thread

LA INTERFACE RUNNABLE

La interface Runnable proporciona un método alternativo a la utilización de la clase Thread, para los casos en los que no es posible hacer que nuestra clase extienda la clase Thread. Esto ocurre cuando nuestra clase, que deseamos correr en un thread independiente deba extender alguna otra clase. Dado que no existe herencia múltiple, nuestra clase no puede extender a la vez la clase Thread y otra más. En este caso nuestra clase debe implantar la interface Runnable, variando ligeramente la forma en que se crean e inician los nuevos threads.

Ejemplo:

Ciclo de vida del thread

Componentes de los applet

TETXT FIELD:

ESTA CLASE ENCAPSULA LAS VARIABLES Y LOS METODOS UTILIZADOS PARA LA INTERFACE CON EL USUARIO.

UTILIZADO PARA CAPTURAR UN DATO EN CASO DE QUE EL USUARIO LO REQUIERA .

EJEMPLO DEL TEXT FIELD:

Public void init()

{

TextField t = new TextField (20);

Add(t);

}

TextField

resultado

TextField t ;

Public void init()

{

T = new TextField (“escriba su nombre”,40);

}

LA CLaSE LABEL

Se utiliza para escribir los nombres de los controles indicando al usuario que tipo de dato se debe insertar en el control.

Funcion del label()

Esta rutina es del constructor de la clase y tiene 3 prototipos:

Label()

Label(strnig n)

Label(string,int a)

Donde:

n=nombre del label

a=modo de alineamiento

Ejemplo:

l=new label(“codigo;”,label.left);

Ejemplo en java

La clase button

Esta clase se utiliza para dibujar el botón en la ventana principal del applet , un botón se pude asociar con una acción del mouse o una acción del usuario a través de una tecla .

Métodos:

Button() , getlabel();, paramstring(); setlabel();

La clase checkbox

Esta clase se utiliza para conformar un grupo de botones de chequeo.

La funcion checkbox

Este método corresponde al constructor de la clase .existen 3 cpnstructores:

Checkbox()

Checkbox(string s,checkboxGroup g ,bolean b)

Checkbox(String s)

Donde:

s=Indica el nombre que identifica el botón de chequeo.

g=Indica a que grupo de chequeo pertenece este botón de chequeo.

b=Determina si el botón queda activo(true) o queda desactivo(false).

La clase checkboxGroup

Esta clase se utiliza para conformar un grupo de botones de chequeo , existen grupos de botones no encapsulados donde pueden estar activos mas de uno , o grupos de botones encapsulados donde puede existir solo uno activo.

La clase choice

Esta clase se utiliza para manejar una lista de opciones:

FUNCION CHOICE()

Este método se utiliza para crear un objeto de tipo choice:

Choice c =new Choice();

Función void addItem(String)

Este método se utiliza para sumar una nueva opción a la lista de opciones:

La clase list

Esta clase encapsula un conjunto de métodos para manejar un menú de opciones con o sin barra de crol.

list ():esta rutina es el constructor de la clase , existen dos constructores list(), list(int,boolean).

El entero me permite determinar cuantas opciones pueden estar visibles , el segundo para un true permite escoger mas de una opción, para el false solo una.

Texto en html

html

head

title=Texto=/title

/head

body

Texto


applet codebase="." applet code="Texto.class" width=400 height=400

/applet

hr

a href="Texto.java">Codigo fuente /a

/body

/html

Texto en java

import java.awt.Graphics;

import java.awt.Font;

import java.awt.Color;

public class Texto extends java.applet.Applet implements Runnable

{

Font f = new Font ("Verdana",Font.BOLD,42);

Color colores [] = new Color[50];

Thread ejecutar;

public void start ()

{

if (ejecutar == null){

ejecutar = new Thread (this); //instanciar es poner en memoria luego hilarlo

ejecutar.start();

}

}

public void stop ()

{

if (ejecutar != null)

ejecutar = null;

}

public void run () {

float c=0;

for(int i=0; i

{

colores[i]=Color.getHSBColor(c,(float)5.0,(float)154.0);//argumentos de colores de HSB son flotantes

c+=0.2;

}

int i=0;

Thread ese = Thread.currentThread();

while(ejecutar==ese){

setForeground(colores[i]);

repaint();

i++;

try{

Thread.sleep(150);//milisegundos controla la ocurrencia (repeticiones) de la animación

}

catch (InterruptedException e){}

if(i==colores.length)

i=0;}

}//fin run

public void paint (Graphics var)

{

var.setFont(f);

var.drawString("HOLA",55,155);

}

}//fin programa

Reloj java

import java.awt.Graphics;

import java.awt.Font;

import java.util.Date;

import java.awt.Color;

public class Anireloj extends java.applet.Applet implements Runnable

{

Font f = new Font ("Verdana",Font.BOLD,42);

Date fecha;

Thread ejecutar; // generar hilos Thread pertenece a java lang ejecutar va acontener el objeto subproceso de la clase anireloj

public void start ()

{

if (ejecutar == null){

ejecutar = new Thread (this); //instanciar es poner en memoria luego hilarlo

ejecutar.start(); }

}

public void stop ()

{

if (ejecutar != null)

ejecutar = null;

}

public void run () {

Thread ese = Thread.currentThread();//current actuar

while (ese==ejecutar) {

repaint();

try{

Thread.sleep(1000);//milisegundos controla la ocurrencia (repeticiones) de la animación

}

catch (InterruptedException e){}

}

}//fin run

public void paint (Graphics var) {

fecha = new Date ();

var.setFont(f);

var.setColor(Color.green);

var.drawString(" "+fecha.toString(),55,155);

}//fin paint

}//fin programa

/**/

Florida en java

import java.awt.Graphics;

import java.awt.Polygon;

import java.awt.Color;

public class Florida extends java.applet.Applet {

public void paint (Graphics var) {

var.setColor(Color.cyan);

var.drawString("Florida",185,75);/*Mensaje*/

var.setColor(Color.green);

var.drawLine(185,80,222,80); /*dibuja linea*/

var.setColor(Color.orange);

var.drawRect(2,2,345,345); /*dibuja rectangulo 2,2(punto inicial)345 ancho, 345alto*/

var.setColor(Color.pink);

var.drawRoundRect(182,61,43,24,10,8); /*dibuja un rectangulo cuyos vertices van redondeado 182,61 punto superior izquierdo 43 ancho del rectangulo 24 alto (10,8)vertices de 10 de

ancho y 10 de largo*/

int x [] ={10,234,253,261,344,336,295,259,205,211,195,191,120,94,81,12,10};

int y [] ={12,15,25,71,209,278,310,274,188,171,174,118,56,68,49,37,12};

int pts = x.length;/*controlar los puntos length longitud*/

Polygon poli = new Polygon(x,y,pts); //se genera un objeto poli de la clase Poly

var.setColor(Color.magenta);

var.drawPolygon(poli);

/*dibujar mickey mouse*/

var.setColor(Color.black);

var.fillOval(235,140,15,15); /*dibuja ovalo(235,140)vertice superior (15,15)sobre el area dibuja el ovalo*/

var.fillOval(225,130,15,15);

var.fillOval(245,130,15,15);

/*dibujar el mar*/

for(int ax=4; ax<150;>

{

for (int ay = 70; ay<320;>

{

var.setColor(Color.blue);

var.drawArc(ax,ay,10,10,0,-180);//dibuja arco (ax,ay)punto vertice superior izquierdo

}

}

}

}

Archivo en java

import java.awt.*;

import java.applet.*;

class Cadena

{

String A[]={"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","novienbre","diciembre"};

public void llevar(StringBuffer s,int opc)

{

s.append(A[opc].toString());

}

}

public class archivos extends Applet

{

List l;

Button b;

int opc=-1;

StringBuffer s=new StringBuffer();

Cadena c=new Cadena();

TextArea T=new TextArea();

public void init()

{

b=new Button("Cargar");

add(b);

l = new List(6, false);

add(l);

add(T);

}

public void paint(Graphics g)

{

if(opc<0>=7)

showStatus("No se puede cargar dias");

else

{

T.appendText(s.toString());

l.addItem(s.toString());

s.setLength(0);

}

}

public boolean action(Event evt,Object obj)

{

if(evt.target==b)

{

opc++;

if(opc<7)

c.llevar(s,opc);

}

repaint();

return true;

}

}

Estrella en java

import java.applet.*;

import java.awt.*;

public class estrella extends Applet implements Runnable

{

int x =0;

int y =0;

boolean blink = true;

int valor_demora = 100;

public void init()

{

x = size().width /8;

y = size().height /8;

String parametro = getParameter("DEMORA");

if (parametro != null)

valor_demora = Integer.parseInt(parametro);

} //fin metodo init

public void start ()

{

(new Thread(this)).start();

}//fin start

public void run ()

{

while (true)

{

repaint();

demora();

}

}//fin metodo run

void demora()

{

try

{

Thread.sleep(valor_demora);

}

catch (InterruptedException e)

{

}

}//fin metodo demora

public void paint(Graphics _g)

{

Graphics g = _g.create();

if (blink)

{ g.setColor(Color.red);

blink=false;

}

else

{

g.setColor(Color.blue);

blink = true;

}

int ancho =( size().width *3)/4;

int alto =( size().height *3)/4;

g.translate(x,y);

Font fuente = new Font ("TimesRoman",Font.BOLD, alto/10);

g.setFont(fuente);

FontMetrics font_metrics = g.getFontMetrics();

g.drawString("JENNY'S",(ancho-font_metrics.stringWidth("JENNY'S")) /2, alto/2 + alto/20);

int puntos_x[] = new int [9];

int puntos_y[] = new int [9];

puntos_x[0] = ancho/2;

puntos_x[1] = (ancho*3)/8;

puntos_x[2] = ancho/10;

puntos_x[3] = (ancho*3)/8;

puntos_x[4] = ancho/2;

puntos_x[5] = (ancho*5)/8;

puntos_x[6] = (ancho*9)/10;

puntos_x[7] = (ancho*5)/8;

puntos_x[8] = ancho/2;

puntos_y[0] = (alto*9)/10;

puntos_y[1] = (alto*5)/8;

puntos_y[2] = (alto/2);

puntos_y[3] = (alto*3)/8;

puntos_y[4] = (alto/10);

puntos_y[5] = (alto*3)/8;

puntos_y[6] = (alto/2);

puntos_y[7] = (alto*5)/8;

puntos_y[8] = (alto*9)/10;

g.drawPolygon(puntos_x,puntos_y,9);

x+=(int) (Math.random()*10)-3;

y+=(int) (Math.random()*10)-3;

if (x<0)

x=0;

if (y<0)

y=0;

if(x>ancho/4)

x = ancho/4;

if (y > alto/4)

y= alto/4;

}

}/*fin de clase estrella*/

Calculadora en java

import java.applet.*;

import java.awt.*;

public class calculadora extends Applet

{

Label display;

float last_num=0;

char last_func=' ';

Panel bottom;

Panel num_panel;

Panel func_panel;

Button number []= new Button [10];

Button fuction []= new Button [6];

public boolean action (Event evt, Object what)

{

if (evt.target instanceof Button)

{

char but_val=((Button)evt.target).getLabel().charAt(0);

switch (but_val)

{

case '+':

case '*':

case '-':

case '/': last_num = Float.valueOf(display.getText()).floatValue();

last_func=but_val;

display.setText("");

break;

case '=': float curr_num =0;

float result=0;

curr_num=Float.valueOf(display.getText()).floatValue();

if(last_func!=' ')

{

switch(last_func)

{

case '+': result=last_num +curr_num;

break;

case '*': result = last_num * curr_num;

break;

case '-': result = last_num - curr_num;

break;

case '/': result = last_num / curr_num;

break;

}

last_num=result;

display.setText(String.valueOf(result));

}

break;

default:

if

(display.getText()=="0")

display.setText ("");

display.setText(display.getText()+but_val);

}

return true;

}

return false;

}

public void init()

{

setLayout (new BorderLayout ());

display = new Label ("0",Label.RIGHT);

add ("North",display);

bottom = new Panel ();

bottom.setLayout (new BorderLayout ());

num_panel = new Panel ();

num_panel.setLayout (new GridLayout (4,3));

for(int i=7;i>0;i=i-3)

for(int j=0;j<3;j++)

{

number [i+j]= new Button((new String ()).valueOf(i+j));

num_panel.add (number [i+j]);

}

number[0]=new Button ((new String()).valueOf(0));

num_panel.add (number[0]);

fuction [4]=new Button(".");

num_panel.add (fuction[4]);

fuction [5]= new Button ("=");

num_panel.add (fuction [5]);

bottom.add ("Center",num_panel);

func_panel=new Panel();

func_panel.setLayout (new GridLayout (4,1));

fuction [0]=new Button ("+");

fuction [1]=new Button ("-");

fuction [2]=new Button ("*");

fuction [3]=new Button ("/");

for (int x=0;x<4;x++)

func_panel.add (fuction [x]);

bottom.add("East", func_panel);

add ("Center", bottom);

}

}

Santafe en java

import java.awt.Graphics;

import java.awt.Polygon;

import java.awt.Color;

public class Santafe extends java.applet.Applet {

public void paint (Graphics var) {

var.setColor(Color.red);

var.drawLine(200,230,200,329); /*linea izquierda(100,80,100,179)*/

var.setColor(Color.red);

var.drawLine(350,230,350,329);/*linea derecha*/

var.setColor(Color.red);

var.fillRect(200,210,151,30); /*dibuja rectangulo 2,2(punto inicial)345 ancho, 345alto*/

var.setColor(Color.white);

var.drawString("SANTA FE",244,235);/*Mensaje*/

/*dibujar el ARCO*/

var.setColor(Color.red);

var.drawArc(200,250,150,150,1,-180);//dibuja arco (ax,ay)punto vertice superior izquierdo

/*CIRCULO*/

var.setColor(Color.red);

var.fillOval(292,305,45,45); /*dibuja ovalo(235,140)vertice superior (15,15)sobre el area dibuja el ovalo*/

/*ESTRELLA1*/

int x [] ={90,110,175,120,140,90 ,40 ,60, 5,70,90};

int y [] ={ 0, 65,65,105,165,130,165,105,65,65, 0};

int pts = x.length;

Polygon poli = new Polygon(x,y,pts);

var.setColor(Color.red);

var.fillPolygon(poli);

/*estrella 2*/

int x2 [] ={290,310,375,320,340,290 ,240 ,260, 205,270,290};

int y2 [] ={ 0, 65,65,105,165,130,165,105,65,65, 0};

int pts2 = x2.length;

Polygon poli2 = new Polygon(x2,y2,pts2);

var.setColor(Color.red);

var.fillPolygon(poli2);

/*estrella 3*/

int x3 [] ={490,510,575,520,540,490 ,440 ,460, 405,470,490};

int y3 [] ={ 0, 65,65,105,165,130,165,105,65,65, 0};

int pts3 = x3.length;

Polygon poli3 = new Polygon(x3,y3,pts3);

var.setColor(Color.red);

var.fillPolygon(poli3);

/*estrella4*/

int x4 [] ={90,110,175,120,140,90 ,40 ,60, 5,70,90};

int y4 [] ={ 200, 265,265,305,365,330,365,305,265,265, 200};

int pts4 = x4.length;

Polygon poli4 = new Polygon(x4,y4,pts4);

var.setColor(Color.red);

var.fillPolygon(poli4);

/*estrella5*/

int x5 [] ={490,510,575,520,540,490 ,440 ,460, 405,470,490};

int y5 [] ={ 200, 265,265,305,365,330,365,305,265,265, 200};

int pts5 = x5.length;

Polygon poli5 = new Polygon(x5,y5,pts5);

var.setColor(Color.red);

var.fillPolygon(poli5);

/*estrella 6*/

int x6 [] ={290,310,375,320,340,290 ,240 ,260, 205,270,290};

int y6 [] ={ 400, 465,465,505,565,530,565,505,465,465,400};

int pts6 = x6.length;

Polygon poli6 = new Polygon(x6,y6,pts6);

var.setColor(Color.red);

var.fillPolygon(poli6);

}

}

GATO JAVA

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Image;

public class Gato extends java.applet.Applet implements Runnable

{

Image [] movimiento = new Image [9];//en cada posicion de un vector se introduce una imagen de tamao 9

Image corre; //variable auxiliar que genera un comportamiento de la imagen

Thread ejecutar;

int x, y=50; //variables de recorridos

public void init (){

String mover [] = {"mov1.gif","mov2.gif","mov3.gif","mov4.gif","mov5.gif","mov6.gif","mov7.gif","mov8.gif","mov9.gif"};

for (int i=0; i

movimiento[i]=getImage(getCodeBase(),"Dibujos/"+mover[i]);//get image cargar imagen (metodo mutable)+ get code base enrutamiento de las imagenes

}//fin init

çnull){

ejecutar = new Thread (this); //instanciar es poner en memoria luego hilarlo

ejecutar.start(); }

}

public void stop ()

{

//if (ejecutar != null)

ejecutar = null;

} // fin stop

public void run () {

setBackground(Color.white);

moveje(0,size().width/2);// corre el gato fila (0,size)metodo de java lang que distribuye el tamao en pixeles (width/2) va hasta la mitad del tamao

corre = movimiento[2];

repaint();

pausa(1000);

corre = movimiento[3];//bostezo

repaint();

pausa(1000);

movparar(4);//rascarse 4 veces

movpausa(5);//dormir y respirar cinco veces

corre=movimiento[7];//despertar y correr

repaint();

pausa(500);

moveje(x,size().width-100);

}//fin run

void moveje(int inicio, int fin)

{

for(int i= inicio; i

{

x=i;

if(corre == movimiento[0])

{

corre = movimiento[1];

}

else

{

corre = movimiento[0];

}

repaint();

pausa(150);

}//fin for

}//fin moveje

void movparar(int tiempos )

{

for(int i= tiempos; i>0; i--)

{

corre= movimiento[4];

repaint();

pausa(150);

corre = movimiento[5];

repaint();

pausa(150);

}

}//fin movparar

void movpausa(int tiempos){

for(int i= tiempos; i>0; i--)

{

corre= movimiento[6];

repaint();

pausa(250);

corre = movimiento[7];

repaint();

pausa(250);

}

}//fin mov pausa

void pausa(int hora){

try {

Thread.sleep(hora);

}

catch (InterruptedException e){}

}//fin pausa

public void paint (Graphics ese) {

if (corre !=null)

ese.drawImage(corre,x,y,this);

}//fin de paint

} //fin programa

1 comentario: