GUI Java
GUI Java
GUI Java
Objetos
GUI en JAVA
Manejo de eventos
Tcnica de programacin avanzada
Se trabaja con mensajes
Maneja contenedores
Modelo de eventos
TODO
Posibles aplicaciones
Control de negocio
Interfaces
Interaccin entre objetos
Eventos
Modelo de Eventos en Java
Componentes (grficos) son fuente de eventos
Click en el botn
O.K.
El botn genera un evento!
El botn es la fuente del
evento
Eventos
Modelo
de eventos de delegacin
Se basa en el patrn de diseo MVC
(Model--View(Model
View-Controller, ModeloModelo-VistaVistaControlador)
Almacenar
el estado interno en un
conjunto de clases llamado modelo
Mostrar la informacin del modelo en una
vista
Cambiar la informacin del modelo en un
controlador
Eventos
Modelo de Eventos en Java
Todo componente tiene eventos.
eventos. Dichos
eventos son predefinidos.
predefinidos.
Paquete: java.
Paquete:
java.util.
util.EventObject
Un evento es un objeto que contiene
informacin del contexto en el que ocurri.
ocurri.
Button
List
TextField
ActionEvent
MouseEvent, ItemEvent
ActionEvent, TextEvent
Eventos
Modelo de Eventos en Java
MenuItem
Checkbox
Choice
ScrollPane
Scrollbar
TextArea
Action Event
ItemEvent
ItemEvent
AdjustmentEvent
AdjustmentEvent
TextEvent
Applet
Modelo de Eventos en Java
Existen eventos especiales que
actan sobre todos los componentes:
componentes:
ComponentEvent
FocusEvent
KeyEvent
MouseEvent
Eventos Swing
AncestorEvent
ChangeEvent
DocumentEvent
MenuEvent
HyperlinkEvent
Eventos
EventObject
AWT Event
Action
Event
Container
Event
Adjustment
Event
Component
Event
Item
Event
Text
Event
Focus
Event
Input
Event
Paint
Event
Window
Event
Key
Event
Mouse
Event
Eventos
2.
El
contenedor
(panel)
debe
subscribirse como escucha al
componente(botn)
Cuando el evento ocurre, los
escuchas son informados para que
reaccionen..
reaccionen
Modelo de Eventos
addActionListener
Panel
O.K.
actionPerformed
getObject
ActionEvent
Ejemplo
El panel se
subscribe al botn
como escucha
Paquete Grfico
Independiente de la plataforma
Se
trabaja
con
COMPONENTES
prefabricados
Maneja contenedores
Agrupacin de COMPONENTES.
COMPONENTES.
Controla el tamao y posicionamiento
Frame, Panel, Applet
Paquete Grfico
Component
Objeto fundamental en la Interfaz de
usuario
Contenedor: son a su vez componentes
Funcionalidad: Apariencia y
Comportamiento
Atributos: visibilidad, tamao, localizacin
Comportamiento: Obedece a eventos
Comunica a su contenedor si va a afectar a
otros componentes
Paquete Grfico
Contenedor (Container)
Aloja y maneja otros componentes:
Frame, Panel, Applet
add()
Adiciona componente
remove()
Elimina componente
Applets
Pequeas aplicaciones que tienen acceso a
un servidor Internet, son transportadas a
travs de la red y se ejecutan como parte de
un documento HMTL
<applet code=nom.class width=200
height=40>
</applet>
Tambin pueden ser apreciadas con
AppletViewer
Applet
Orden de inicializacin de un applet
init
start
stop
destroy
Applet
Restricciones de Seguridad
No puede leer o escribir archivos en el
host local
Slo pueden abrir conexiones de red al
servidor donde se encuentran.
encuentran.
No pueden correr otros procesos en el
host local
Pueden trabajar con servidores para
almacenar y comunicar datos.
datos. (usando
RMI, por ejemplo)
Applet
Cmo se define?
class nomclase extends Applet{
<cuerpo de la clase>
}
class nomclase extends JApplet{
<cuerpo de la clase>
}
10
Applet en AWT
Imprime el mensaje Hola Mundo
import java.awt.*;
import java.applet.*;
public class HelloWorld extends Applet {
public void paint(Graphics g) {
g.drawString("Hello World !", 20, 20);
}
}
Applet en Swing
import javax.swing.*;
import java.awt.*;
public class HelloWorld extends JApplet {
public void paint(Graphics g) {
g.drawString("Hello World !", 20, 20);
}
}
11
Applet
<HTML>
<BODY>
<APPLET code=CambioMoneda.class WIDTH=250
HEIGHT=100>
<PARAM NAME=valor VALUE=70000>
<PARAM NAME=cActual VALUE=1580>
</APPLET>
<BR>
<BR>(<A HREF="CambioMoneda.java">Código</A>)
</BODY>
</HTML>
Applet
import java.awt.*;
import java.applet.*;
public class CambioMoneda extends Applet {
public void paint(Graphics g) {
String strCambio = getParameter("cActual");
String strValor = getParameter("valor");
System.out.println( "cambio: " + strCambio + "; valor: " +
strValor );
double cambio = ( Double.valueOf(strCambio) ).doubleValue();
double valor = ( Double.valueOf(strValor) ).doubleValue();
g.drawString("El valor en dolares de " + valor + " pesos es: " +
valor/cambio, 20, 20);
}
}
12
Ejemplo
public class MiPanel extends Panel implements
ActionListener
{ ...
actionPerformed((ActionEvent evt)
public void actionPerformed
{
// Qu se debe hacer cuando se hace click en
el botn
}
}
Ejemplo 2 (AWT)
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class TextEntryBox extends Applet
implements ActionListener{
TextArea area;
TextField campo;
13
Ejemplo 2 (AWT)
public void init(){
setLayout(new BorderLayout());
add(Center, area=new TextArea());
area.setFont(new
Font(TimesRoman,Font.BOLD,18));
area.setText(Hola a todos!);
add(South, campo = new TextField());
campo.addActionListener(this);
}
Ejemplo 2 (AWT)
14
Ejemplo 2 (Swing)
Coloca todo lo del campo de texto en la Caja de Texto
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class TextEntryBox extends JApplet implements
ActionListener{
JTextArea area;
JTextField campo;
Ejemplo 2 (Swing)
public void init(){
getContentPane().setLayout(new BorderLayout());
getContentPane().add("Center",area=new
JTextArea());
area.setFont(new
Font("TimesRoman",Font.BOLD,18));
area.setText("Hola a todos!");
getContentPane().add("South",campo = new
JTextField());
campo.addActionListener(this);
}
15
Ejemplo 2 (Swing)
Ejemplo 3
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class ListaProgramas extends Applet{
public void init(){
String [] items =
{Pregrado,Magister,Especializacin};
add(new ListaSeleccion(items));
}
}
16
Ejemplo 3
class ListaSeleccion extends Container implements
ActionListener{
List lista;
TextField texto;
ListaSeleccion (String [] items){
lista = new List(2);
for(int i=0; i<items.length;i++)
lista.addItem(items [i]);
texto = new TextField();
texto.addActionListener(this);
setLayout (new BorderLayout());
add(Center, lista);
add(South,texto);
}
Ejemplo 3
public void actionPerformed(ActionEvent e){
String busqueda = texto.getText();
for (int i=0; i < lista.getItemCount(); i++)
if (lista.getItem(i).equals(busqueda){
lista.select(i);
lista.makeVisible(i);
break;
}
texto.setText();
}
}
17
Ejemplo Tokenizador
Tokenizador: Procesa una oracin recibida
Tokenizador:
y la descompone en palabras, indicando el
nmero de veces que se repite cada una de
las palabras
Si la oracin es:
es: La casa de la loma
El resultado es:
es:
La
2
Casa
1
De
1
Loma 1
18
oracin
// Salida
TextArea resultado = new TextArea(5,80); //Area de texto para mostrar
resultados
// Botones
Button procesar = new Button("Procesar"); // Botn para descomponer la
oracin
19
20
21
Ejemplos Swing
// Componentes para la interfaz
// Entrada
JTextField oracion = new JTextField (40); // Campo de texto
para leer la oracin
// Salida
JTextArea resultado = new JTextArea(5,40); //Area de texto
para mostrar resultados
// Botones
JButton procesar = new JButton("Procesar"); // Botn para
partir la oracin
JButton limpiar = new JButton("Limpiar"); // Boton para limpiar
los campos
JButton salir = new JButton("Salir"); // Boton para terminar el
programa
22
panelOracion.add(labelOracion);
panelOracion.add(oracion);
getContentPane().add(panelOracion);
23
Ejemplos Swing
// Mostrar Botones
JPanel panelBotones = new JPanel();
panelBotones.setLayout(new FlowLayout());
panelBotones.add(procesar);
panelBotones.add(limpiar);
panelBotones.add(salir);
getContentPane().add(panelBotones);
//
//-- Asociar comportamiento a los eventos -----------------------procesar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ProcesarOracion();
}
});
24
25
26