lunes, 12 de octubre de 2015

Creacion de applets

Programación Orientada a Objetos

Creación de Applet:

7 pasos sencillos para la creación de una applet:

1. Introducción 
2. Estructura de un applet 
3. Inserción en una página web 
4. Dibujando sobre un applet 
5. Etiquetas y botones 
6. Entradas de Texto 
7. Ejemplo: regresión lineal

1. Introducción 

Los applets son objetos Java que: 
• presentan una ventana gráfica para su ejecución 
• tienen un conjunto bien definido de operaciones que: - les permiten formar parte de otros programas (p.e., appletviewer) - y estar integrado en páginas web 
• permiten por tanto crear páginas web dinámicas 
• tienen algunas restricciones especiales: - no tienen operación main() - están gobernados por eventos - la entrada/salida es diferente a la de las aplicaciones

Eventos
Los eventos son sucesos que el sistema detecta relacionados con el programa, la entrada/salida, y el sistema de ventanas: 
• eventos de ratón: mover, hacer click, ...
 • eventos de teclado: pulsar o liberar una tecla 
• eventos de acción: pulsación de un botón o menú 
• eventos de texto: cambiar el valor de una entrada de texto 
• eventos de ventana: cerrar una ventana, abrirla, minimizarla... 
• etc.

Arquitectura gobernada por eventos (cont.):
En un programa gobernado por eventos: 
• hay operaciones que gestionan eventos 
• el applet está esperando a que llegue un evento 
• cuando el sistema detecta un evento llama a la operación asociada a ese evento • la operación debe terminar pronto • la operación no debe esperar a que algo ocurra (p.e., leer) • el usuario inicia la acción, no al revés como en las aplicaciones

2. Estructura de un applet

import java.awt.*;
import java.applet.*; 
public class SimpleApplet extends Applet { 
String mens;
public void init() { 
 mens="Inicializado"; 
 }
 public void start() { 
 mens=mens+" Comienza"; 
 } 
public void paint(Graphics g) { 
 g.drawString(mens,80,10); 
 } 
}

3. Inserción en una página web

Para insertar un applet en una página web: 
• con Bluej: “Run Applet in Web browser” 
• si la herramienta de creación de páginas web lo permite, añadir el applet en el lugar deseado 
• si no, añadir con el editor de textos en el lugar deseado: 
 donde: - codebase: directorio donde se encuentran las clases 
            - code: nombre del applet 
            - width, height: ancho y alto de la ventana

Visualización
Con un navegador de internet 
• Ojo: suelen usar versiones viejas de Java 
• Actualizar la máquina virtual java si es necesario 
Con la herramienta appletviewer: appletviewer pagina.html

4. Dibujando sobre un applet

La salida se hace dibujando sobre un entorno gráfico desde el método 
paint(): 
 - drawString(String str, int x, int y) 
 - drawLine(int startX, int startY, int endX, int endY) 
 - drawREct(int x, int y, int ancho, int alto) - drawOval(int x, int y, int ancho, int alto) 
 - drawArc(int x, int y, int ancho, int alto, int anguloInicial, int anguloBarrido)
 - drawPolygon (int x[], int y[], int numPuntos) 

Todas las coordenadas en pixels, siendo (0,0) la esquina superior izquierda 
Ángulos en grados, 0=horizontal

Ejemplo:

import java.awt.*; 
import java.applet.*; 
public class Dibujo extends Applet { 
public void init() { 
 } 
public void start() {
 } 
public void paint(Graphics g) 
{ g.drawOval(10,10,100,100); 
 g.drawOval(30,30,20,20);
 g.drawOval(70,30,20,20);
 g.drawArc(30,30,60,60,210,120); 
 }
 }

5. Etiquetas y botones

Las etiquetas son ventanas de la clase Label con un texto, que se pueden añadir a un applet (con add()) Los botones de la clase Button, además de lo anterior, producen un evento de “acción” al ser pulsados • hay que programar el applet para que atienda a eventos de acción; para ello: - debe implementar ActionListener - debe tener una operación actionPerformed(), que atiende a todos los eventos de acción • hay que indicar que los eventos del botón son atendidos por el applet: - con la operación addActionListener()

Ejemplo:

import java.awt.*;
import java.applet.*;
import java.awt.event.*; 
public class Contador extends Applet implements ActionListener{

 Label mens; 
 Button incr,decr; 
int cuenta=0; 

public void init() { 
 mens=new Label ("Contador: "+cuenta);
 incr=new Button("Incrementar");
 decr=new Button("Decrementar"); 
 add(incr); 
 add(decr); 
 add(mens);
 incr.addActionListener(this); 
 decr.addActionListener(this); 
 }

Ejemplo (cont.):

public void actionPerformed(ActionEvent ev) { 
 String str = ev.getActionCommand();
 if (str.equals("Incrementar")) { 
 cuenta++; 
 }
 else if (str.equals("Decrementar")) { 
 cuenta--; } 
 mens.setText("Contador: "+cuenta); } 
public void start() {
 } 
public void paint(Graphics g) { 
 }
 }

6. Entradas de Texto

Son objetos de la clase TextField que:
 • presentan una ventana en pantalla en la que se puede teclear un texto 
• se pueden añadir a un applet • se puede leer su valor con getText() 
• generan eventos de tipo texto

Ejemplo:

import java.awt.*;
 import java.applet.*; 
import java.awt.event.*;
 public class Temperatura extends Applet 
implements ActionListener
 { 
 Label mens;
 Button af,ag; 
 TextField temp;

Ejemplo (cont.):

public void init() {
 mens=new Label (" "); 
 af=new Button("A Fahrenheit"); 
 ag=new Button("A Grados");
 temp= new TextField("0.0"); 
 add(af); 
 add(ag);
 add(temp); 
 add(mens); 
af.addActionListener(this); 
 ag.addActionListener(this); }

7. Ejemplo: regresión lineal

Se dispone de la clase RegresionLineal2, con la siguiente interfaz: 
public class RegresionLineal2 {
 public class NoCabe extends Exception {}
 public RegresionLineal2(int maxPuntos) 
public void inserta(double x, double y) throws NoCabe 
public double coefA() 
public double coefB() 
public double correlacion() 
public double valorY(double x) 
public void dibuja(Graphics g) 
}

Ejemplo (cont.):

import java.awt.*; 
import java.awt.event.*; 
import java.applet.*;
 public class AppletRL extends Applet implements ActionListener { 
 Button inserta, calcula; 
 TextField num1,num2;
 RegresionLineal rl; 
 String msg=""; 
boolean calculated=false;

//Initialize the applet public void init() 
{
try 
this.setSize(new Dimension(640,480));
 inserta=new Button("Inserta"); 
 calcula=new Button("Calcula");
 rl=new RegresionLineal(100); 
 num1=new TextField(8); 
 num2=new TextField(8); 
 Label lab1=new Label("X");
 Label lab2=new Label("Y");
 add(lab1); add(num1); 
 add(lab2); add(num2); 
 add(inserta); 
 add(calcula);

inserta.addActionListener(this); 
 calcula.addActionListener(this);
 }
 catch(Exception e) 
 e.printStackTrace(); 
 }
 }

public void actionPerformed(ActionEvent ev) { 
double x,y; String str = ev.getActionCommand(); 
if (str.equals("Inserta"))
 {
 try 
 x=Double.parseDouble(num1.getText());
 y=Double.parseDouble(num2.getText());
 rl.inserta(x,y);
 msg="Insertados "+num1.getText()+","+num2.getText(); } 
catch (Exception e) { 
 msg="Error en datos "; } 
 } 
else if (str.equals("Calcula")) { calculated=true; }
 repaint(); // fuerza a que se llame a paint() }

public void paint(Graphics g) { 
if (calculated) {
 g.drawString("Valores obtenidos. A="+rl.coefA()+
 " B="+rl.coefB()+ 
 " r="+rl.correlacion(),40,460);
 rl.dibuja(g); }
 else 
{
 g.drawString(msg,40,60);
 }
 } 
}

No hay comentarios:

Publicar un comentario