Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

GUI Java

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 26

Programacin Orientada a

Objetos

GUI en JAVA

Angela C. Carrillo Ramos

Manejo de eventos
Tcnica de programacin avanzada
 Se trabaja con mensajes
 Maneja contenedores


Objetos que escuchan y procesan eventos

Objetos que producen eventos


 Pueden
ser utilizados para separar
diferentes niveles conceptuales, v.gr.
gr., la
interfaz con el modelo del mundo.
mundo.
 Sirve de apoyo a algunos patrones de
diseo..
diseo


Modelo de eventos


TODO


Posibles aplicaciones
Control de negocio
 Interfaces
 Interaccin entre objetos


Utilizar el ejemplo de la tienda (nmero de


items < que una cantidad dada)
 Listeners
 Adapters


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


Quin reacciona ante el evento?


Escucha (Listener)
1.

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

Panel p = new Panel();


Button b = new Button(O.K);
b.addActionListener(p);

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


Layout:: Distribucin de los componentes


Layout

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


Otros mtodos son:


paint
 update


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


Imprime el mensaje Hola Mundo

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&oacute;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)

public void actionPerformed(ActionEvent e){


area.append(campo.getText() + \\n);
campo.setText();
}
}

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)

public void actionPerformed(ActionEvent e){


area.append(campo.getText() + '\'\n');
campo.setText("");
}
}

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

Ejemplo Tokenizador (AWT)


import java.awt.*;
import java.awt.event.*;
import java.awt.Toolkit;
import java.io.*;
public class AppletEjemplo extends java.applet.Applet {
/* -------------------------------------------------------* Atributos de la clase
* -------------------------------------------------------- */
Tokenizador procesador = new Tokenizador();
// Tokenizador para descomponer una oracin en
palabras

18

Ejemplo Tokenizador (AWT)


// Componentes para la interfaz
// Entrada
TextField oracion = new TextField (80);

// Campo de texto para leer la

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

Button limpiar = new Button("Limpiar"); // Boton para limpiar los campos


Button salir = new Button("Salir"); // Boton para terminar el programa
public void init() {
//---------------------------------------------------------------------//---------------------------------------------------------------------// Pinta la interfaz del applet
//---------------------------------------------------------------------//---------------------------------------------------------------------// PRE: True
// POST: True
//---------------------------------------------------------------------//----------------------------------------------------------------------

Ejemplo Tokenizador (AWT)


setLayout(new FlowLayout());
// Mostrar los campos para leer la oracin.
Panel panelOracion = new Panel();
panelOracion.setLayout(new GridLayout(2,1));
Label labelOracion = new Label("Escriba la oracin
a procesar.");
panelOracion.add(labelOracion);
panelOracion.add(oracion);
add(panelOracion);

19

Ejemplo Tokenizador (AWT)


// Mostrar los campos para mostrar los resultados.
Panel panelResultado = new Panel();
panelResultado.setLayout(new GridLayout(2,1));
Label labelResultado = new Label("El resultado es:");
panelResultado.add(labelResultado);
panelResultado.add(resultado);
add(panelResultado);
// Mostrar Botones
Panel panelBotones = new Panel();
panelBotones.setLayout(new FlowLayout());
panelBotones.add(procesar);
panelBotones.add(limpiar);
panelBotones.add(salir);
add(panelBotones);

Ejemplo Tokenizador (AWT)


//
//-- Asociar comportamiento a los eventos -----------------------procesar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ProcesarOracion();
}
});
limpiar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
LimpiarCampos();
}
});
salir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}

20

Ejemplo Tokenizador (AWT)


public void ProcesarOracion() {
//
//----------------------------------------------------------------------------------------------------------------------------------------// Procesa la oracin que est en el campo de texto
"oracion"
//
//----------------------------------------------------------------------------------------------------------------------------------------// PRE: True
// POST: True
//
//----------------------------------------------------------------------------------------------------------------------------------------// Procesar la oracin y mostrar resultados
procesador.Procesar(oracion.getText());
procesador.GenerarResultados(resultado);
}

Ejemplo Tokenizador (AWT)


public void LimpiarCampos() {
//
//----------------------------------------------------------------------------------------------------------------------------------------// Limpia los campos de entrada y salida
//
//----------------------------------------------------------------------------------------------------------------------------------------// PRE: True
// POST: True
//
//----------------------------------------------------------------------------------------------------------------------------------------// Limpiar los campos
oracion.setText("");
resultado.setText("");
}
}

21

Ejemplo Tokenizador (Swing)


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class AppletEjemplo extends JApplet {
// Atributos de la clase
Tokenizador procesador = new Tokenizador();
// Tokenizador para descomponer una oracin en
palabras

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

Ejemplo Tokenizador (Swing)


public void init() {
getContentPane().setLayout(new FlowLayout());
// Mostrar los campos para leer la oracin.
JPanel panelOracion = new JPanel();
panelOracion.setLayout(new GridLayout(2,1));
JLabel labelOracion = new JLabel("Escriba la oracin
a procesar.");

panelOracion.add(labelOracion);
panelOracion.add(oracion);
getContentPane().add(panelOracion);

Ejemplo Tokenizador (Swing)


// Mostrar los campos para mostrar los resultados.
JPanel panelResultado = new JPanel();
panelResultado.setLayout(new GridLayout(2,1));
JLabel labelResultado = new JLabel("El resultado es:");
panelResultado.add(labelResultado);
resultado.setLineWrap(true); /* para cortar las lneas de
acuerdo al tamao del rea de texto */
panelResultado.add(new JScrollPane(resultado));
//El rea de texto tiene un Scroll. Se debe crear un panel
que permita esto y adicionar a dicho panel el rea de
texto.
getContentPane().add(panelResultado);

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();
}
});

Ejemplo Tokenizador (Swing)


limpiar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
LimpiarCampos();
}
});
salir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}

24

Ejemplo Tokenizador (Swing)


public void ProcesarOracion() {
//
//------------------------------------------------------------------------------------------------------------------------------------------// Procesa la oracin que est en el campo de texto
"oracion"
//
//------------------------------------------------------------------------------------------------------------------------------------------// PRE: True
// POST: True
//
//------------------------------------------------------------------------------------------------------------------------------------------// Procesar la oracin y mostrar resultados
procesador.Procesar(oracion.getText());
procesador.GenerarResultados(resultado);
}

Ejemplo Tokenizador (Swing)


public void LimpiarCampos() {
//
//------------------------------------------------------------------------------------------------------------------------------------------// Limpia los campos de entrada y salida
//
//------------------------------------------------------------------------------------------------------------------------------------------// PRE: True
// POST: True
//
//------------------------------------------------------------------------------------------------------------------------------------------// Limpiar los campos
oracion.setText("");
resultado.setText("");
}
}

25

Ejemplo Tokenizador (Swing)


public void GenerarResultados(JTextArea area) {
int i;
Palabra p;
area.setText("");
for ( i=0; i<palabras.size(); i++ ) {
p=(Palabra)palabras.elementAt(i);
area.append(p.GetPalabra() + "\
"\t" +
p.GetRepeticiones() + "\
"\n");
}
}

26

También podría gustarte