Seminario
UNIVERSIDAD DE CANTABRIA
Creación de Applets Simples
Junio 2004
Michael González:
[email protected]
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
1
Creación de Applets Simples
UNIVERSIDAD DE CANTABRIA
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
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
2
1. Introducción
UNIVERSIDAD DE CANTABRIA
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
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
3
Eventos
UNIVERSIDAD DE CANTABRIA
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.
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
4
Arquitectura gobernada por
eventos
UNIVERSIDAD DE CANTABRIA
Evento 1
Evento 2
Evento 3
Applet
Operación 1
Operación 2
Operación 3
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
5
Arquitectura gobernada por
eventos (cont.)
UNIVERSIDAD DE CANTABRIA
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
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
6
2. Estructura de un applet
UNIVERSIDAD DE CANTABRIA
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);
}
}
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
7
3. Inserción en una página
web
UNIVERSIDAD DE CANTABRIA
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:
<applet codebase="classes" code="SimpleApplet"
width=300 height=200>
</applet>
donde:
- codebase: directorio donde se encuentran las clases
- code: nombre del applet
- width, height: ancho y alto de la ventana
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
8
Visualización
UNIVERSIDAD DE CANTABRIA
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
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
9
4. Dibujando sobre un applet
UNIVERSIDAD DE CANTABRIA
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
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
10
UNIVERSIDAD DE CANTABRIA
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);
}
}
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
11
5. Etiquetas y botones
UNIVERSIDAD DE CANTABRIA
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()
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
12
Ejemplo
UNIVERSIDAD DE CANTABRIA
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);
}
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
13
Ejemplo (cont.)
UNIVERSIDAD DE CANTABRIA
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) {
}
}
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
14
6. Entradas de Texto
UNIVERSIDAD DE CANTABRIA
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
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
15
UNIVERSIDAD DE CANTABRIA
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;
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
16
Ejemplo (cont.)
UNIVERSIDAD DE CANTABRIA
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);
}
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
17
Ejemplo (cont.)
UNIVERSIDAD DE CANTABRIA
public void actionPerformed(ActionEvent ev) {
try {
double tempActual=Double.parseDouble(temp.getText());
String str = ev.getActionCommand();
if (str.equals("A Fahrenheit")) {
mens.setText("Temperatura "+tempActual+" C = "+
(tempActual*1.80+32.0)+" F");
} else if (str.equals("A Grados")) {
mens.setText("Temperatura "+tempActual+" F = "+
((tempActual-32.0)/1.80)+" C");
}
} catch (NumberFormatException e) {
mens.setText("Error");
}
}
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
18
Ejemplo (cont.)
public void start() {
}
public void paint(Graphics g) {
}
}
UNIVERSIDAD DE CANTABRIA
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
19
7. Ejemplo: regresión lineal
UNIVERSIDAD DE CANTABRIA
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)
}
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
21/jun/04
20
Ejemplo (cont.)
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
UNIVERSIDAD DE CANTABRIA
public class AppletRL extends Applet implements ActionListener {
Button inserta, calcula;
TextField num1,num2;
RegresionLineal rl;
String msg="";
boolean calculated=false;
GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTR
Comentarios de: Seminario - Creación de Applets Simples (0)
No hay comentarios