Академический Документы
Профессиональный Документы
Культура Документы
Java
Applets, AWT, Swing, …
1
Agenda
•El applet básico •Controlando la colocación (Layout)
•Métodos para sobreescribir •FlowLayout
•Primer applet •BorderLayout
•Ejecución en el navegador WWW •GridLayout
•CardLayout
•Botones •GridBagLayout
•Capturando un evento
•Text Field •Limitaciones applets: Versión
•Text Area •Limitaciones applets: Seguridad
•Label •Manejando eventos de ventana
•CheckBoxes •Menus
•Radio Buttons •Dialog Boxes
•Drop-Down lists
•Lists Boxes •El nuevo modelo de eventos Java 1.1
•Swing /JFC
•Componentes Swing
•Ejemplo Swing
2
UI: Creando Applets y Ventanas
3
UI: El applet básico
•Han sido diseñados dentro de un “entorno de aplicación”
4
UI: Métodos del applet a
sobreescribir
Métodos que se tienen que sobreescribir:
•init(): Llamado para inicializar el applet
•action(): Manejar los eventos “principales”
5
UI: Primer applet
El objeto Graphics permite pintar en el applet:
import java.awt.*;
import java.applet.*;
6
UI: Applet se ejecuta en
Navegador WWW
La página Web (HTML) debe contener el “tag applet”
<applet code=Applet1
width=200
height=200>
</applet>
7
UI: Botones
8
UI: Boton2.java
import java.awt.*; public boolean action(Event evt, Object arg) {
import java.applet.*; if(evt.target.equals(b1))
getAppletContext().showStatus("Boton 1");
public class Button2 extends Applet { else if(evt.target.equals(b2))
Button b1 = new Button("Boton 1"), getAppletContext().showStatus("Boton 2");
b2 = new Button("Boton 2"); else
public void init() { return super.action(evt, arg);
add(b1); return true;
add(b2); }
} }
9
UI: TextField
Hereda de TextComponent:
•Leer o escribir el texto
•Leer o escribir el texto seleccionado
•Permitir la edición
•Otros...
10
UI: TextField1.java
public class TextField1 extends Applet {
Button b1 = new Button("Leer Texto"),
b2 = new Button("Escribir Texto");
TextField
t = new TextField("Texto inicial", 30);
String s = new String();
public void init() {
add(b1);
add(b2);
add(t);
}
11
UI: TextField1.java
public boolean action (Event evt, Object arg) {
if(evt.target.equals(b1)) {
getAppletContext().showStatus(t.getText());
s = t.getSelectedText();
if(s.length() == 0) s = t.getText();
t.setEditable(true);
}
else if(evt.target.equals(b2)) {
t.setText("Texto insertado por el botón: " + s);
t.setEditable(false);
}
else
return super.action(evt, arg);
return true;
}
}
12
UI: TextArea
Texto de múltiples líneas
Hereda de TextComponent:
•Leer o escribir el texto : getText(), setText()
•Leer o escribir el texto seleccionado
•Añadir texto: appendText()
•Otros...
13
UI: TextArea1.java
import java.awt.*; public void init() {
import java.applet.*; add(b1);
add(t1);
public class TextArea1 extends Applet { add(b2);
Button b1 = new Button("Area Texto 1"); add(t2);
Button b2 = new Button("Area Texto 2"); add(b3);
Button b3 = new Button("Reemplazar Texto"); add(b4);
Button b4 = new Button("Insertar Texto"); }
TextArea t1 = new TextArea("t1", 1, 30);
TextArea t2 = new TextArea("t2", 4, 30);
14
UI: TextArea1.java
public boolean action (Event evt, Object arg) {
if(evt.target.equals(b1))
getAppletContext().showStatus(t1.getText());
else if(evt.target.equals(b2)) {
t2.setText("Insertado por el boton 2");
t2.appendText(": " + t1.getText());
getAppletContext().showStatus(t2.getText());
}
else if(evt.target.equals(b3)) {
String s = " Reemplazamiento "; else if(evt.target.equals(b4))
t2.replaceText(s, 3, 3 + s.length()); t2.insertText(" Insertedo ", 10);
} else
return super.action(evt, arg);
return true;
}
}
15
UI: Label (etiqueta)
Coloca un texto estático en un panel
Constructores:
•En blanco
•Texto inicial
•Alineación (CENTER, LEFT, RIGHT)
(static ints definidos en la clase
Label)
16
UI: Label1.java
import java.awt.*;
import java.applet.*;
17
UI: Label1.java
public boolean action (Event evt, Object arg) {
if(evt.target.equals(b1))
labl2.setText("Text insertado en Label");
else if(evt.target.equals(b2)) {
if(labl3.getText().trim().length() == 0) labl3.setText("labl3");
if(labl3.getAlignment() == Label.LEFT)
labl3.setAlignment(Label.CENTER);
else if(labl3.getAlignment()==Label.CENTER)
labl3.setAlignment(Label.RIGHT);
else if(labl3.getAlignment() == Label.RIGHT)
labl3.setAlignment(Label.LEFT);
}
else
return super.action(evt, arg);
return true;
}
}
18
UI: CheckBoxes
Checkbox cb1 = new Checkbox(“uno”);
Checkbox cb2 = new Checkbox(“dos”);
add(cb1);
add(cb2); Checkbox cb1 = new Checkbox(“one”);
19
UI: Radio Buttons
Pone CheckBoxes en un “grupo” de checkboxes
20
UI: Radio Buttons
public boolean action (Event evt, Object arg) {
if(evt.target.equals(cb1))
t.setText("Radio button 1");
else if(evt.target.equals(cb2))
t.setText("Radio button 2");
else if(evt.target.equals(cb3))
t.setText("Radio button 3");
else
return super.action(evt, arg);
return true;
}
}
21
UI: Drop-Down Lists
Diferentes de los Combo Boxes de Windows
22
UI: Drop-Down Lists
public boolean action (Event evt, Object arg) {
if(evt.target.equals(c))
t.setText("index: " + c.getSelectedIndex()
+ " " + (String)arg);
else if(evt.target.equals(b)) {
if(count < description.length)
c.addItem(description[count++]);
}
else
return super.action(evt, arg);
return true;
}
}
23
UI: ListBoxes
•A diferencia de Choice, permite selección múltiple
•Método action() llamado cuando se hace doble-click
•Se pueden capturar clicks (uno sólo) reescribiendo handleEvent()
24
UI: List1.java
import java.awt.*; public void init() {
import java.applet.*; t.setEditable(false);
for(int i = 0; i < 4; i++)
public class List1 extends Applet { lst.addItem(flavors[count++]);
String[] flavors = { "Chocolate", "Strawberry", add(t);
"Vanilla Fudge Swirl", "Mint Chip", add(lst);
"Mocha Almond Fudge", "Rum Raisin", add(b);
"Praline Cream", "Mud Pie" }; }
List lst = new List(6, true);
TextArea t = new TextArea(flavors.length, 30);
Button b = new Button("test");
int count = 0;
25
UI: List1.java
public boolean action (Event evt, Object arg) {
if(evt.target.equals(lst)) {
t.setText("");
String[] items = lst.getSelectedItems();
for(int i = 0; i < items.length; i++)
t.appendText(items[i] + "\n");
}
else if(evt.target.equals(b)) {
if(count < flavors.length)
lst.addItem(flavors[count++], 0);
}
else
return super.action(evt, arg);
return true;
}
}
26
UI: Controlando la disposición
•Loscomponentes son colocados en el panel usando
“layout manager” (gestor de disposición)
27
UI: FlowLayout
•Es el “layout” por defecto
•Los botones toman su tamaño
“natural”
import java.awt.*;
import java.applet.*;
28
UI: BorderLayout
•Es el “Layout” por defecto
para los diálogos y las
aplicaciones
import java.awt.*;
import java.applet.*;
29
UI: GridLayout
•Se organizan los componentes en
filas y columnas
import java.awt.*;
import java.applet.*;
30
UI: CardLayout
•Se puede mostrar una u otra “card”
•Una “card” son como paneles solapados, y que sólo se
muestra uno
•Es como el Tabbed Dialog de Windows salvo:
•No hay solapas
•Tienes que manejarlo todo
•Swing (Java 1.2) tiene JTabbedPane
31
UI: GridBagLayout
32
Applets
La sintaxis de las etiquetas <APPLET> y <PARAM> es la que se muestra a continuación y que iremos explicando
en párrafos posteriores:
<APPLET CODE= WIDTH= HEIGTH= [CODEBASE=] [ALT=] [NAME=] [ALIGN=] [VSPACE=] [HSPACE=]> <PARAM
NAME= VALUE= > </APPLET>
Atributos obligatorios:
CODE : Nombre de la clase principal
WIDTH : Anchura inicial
HEIGHT : Altura inicial
Atributos opcionales:
CODEBASE : URL base del applet
ALT : Texto alternativo
NAME : Nombre de la instancia
ALIGN : Justificación del applet (LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM y
ABSBOTTOM)
VSPACE : Espaciado vertical
HSPACE : Espaciado horizontal
33
Applets
import java.awt.Graphics;
import java.applet.Applet;
34
Applets
<HTML>
<APPLET CODE=HolaTal.class WIDTH=300 HEIGHT=100>
<PARAM NAME="Nombre" VALUE=“Barsa">
</APPLET>
</HTML>
35
Ciclo de vida de un applet
36
Limitaciones Applets
•Seguridad: Propicio para la red
- No pueden acceder fuera de SU ESPACIO de
almacenamiento.
- Ejemplo, los applets normalmente se almacenan en un
servidor remoto y se ejecutan en el puesto cliente, en este
caso no podrán acceder al espacio de almacenamiento
(disco) del cliente
37
•Versiones
Política de seguridad a partir de Java 1.2
Limitaciones Applets
grant signedBy quien_firma_el_código, codeBase
código_al_que_se_aplica_el_permiso { permission
tipo_de_permiso "destino", "acciones"; };
38
Archivos de política de seguridad
PolicyTool
Con el JDK viene una sencilla herramienta para
modificar/crear archivos .policy: PolicyTool.
Con esta herramienta ni tan siquiera es necesario
conocer la sintaxis de grant { ... };
39
Limitaciones Applets
Certificados
http://www.chuidiang.com/chuwiki/index.php?t
itle=Firmar_Applets
Applets interesantes
http://www.dgp.toronto.edu/~mjmcguff/learn/java/
40