Publicado el 2 de Mayo del 2019
1.039 visualizaciones desde el 2 de Mayo del 2019
610,7 KB
56 paginas
Creado hace 13a (16/03/2011)
Programación Basada en Eventos
La construcción de una GUI utiliza un modelo de
programación basado en eventos.
En este modelo el orden en el cual se ejecutan las
instrucciones de un programa va a quedar
determinado por eventos.
Un evento es una señal de que algo ha ocurrido.
En esta materia consideraremos únicamente eventos
generados por acciones del usuario al interactuar
con la GUI.
Introducción a la Programación Orientada a Objetos
Programación Basada en Eventos
Algunas componentes de una GUI van a ser
reactivas, es decir tienen la capacidad de reaccionar
ante las acciones del usuario.
Una componente reactiva están asociada a un objeto
fuente del evento creado por el programador.
La reacción del sistema en respuesta a la acción del
usuario va a quedar determinada por la clase a la que
pertenece un objeto oyente.
El objeto oyente está ligado al objeto fuente de
evento a través de una instrucción de registración.
Introducción a la Programación Orientada a Objetos
Programación Basada en Eventos
Un objeto fuente de evento tienen la capacidad
de percibir un evento externo y disparar un
evento interno, esto es, crear un objeto evento de
software.
Este objeto evento de software es el argumento de
un mensaje enviado al objeto oyente.
El método que se ejecuta en respuesta a este
mensaje forma parte de una interface provista por
Java y es implementado por el programador en la
clase del oyente.
Introducción a la Programación Orientada a Objetos
Programación Basada en Eventos
dispara un
evento
interno
OBJETO
FUENTE
detecta el
evento
externo
OBJETO
EVENTO
registrado
El objeto oyente
recibe un mensaje
con el objeto evento
como parámetro
OBJETO
OYENTE
Introducción a la Programación Orientada a Objetos
Interfaces Gráficas
que
implementen interfaces
La construcción de una GUI va a requerir
• Definir clases que deriven de las clases gráficas
provistas por Java.
• Definir
clases
gráficas provistas por Java.
• Crear objetos de las clases provistas o de las
clases que derivadas o implementadas
• Elegir un organizador de layout y especificar la
apariencia de las componentes.
• Insertar las componentes en los contenedores
Introducción a la Programación Orientada a Objetos
Interfaces Gráficas
La estructura de las GUI que hemos estamos
definiendo consta entonces de:
• Instrucciones para importar paquetes gráficos.
• La definición de una clase que crea un frame de
una clase que extiende a JFrame y lo hace visible.
•La definición de la clase que extiende a JFrame e
incluye:
Atributos asociados a componentes de la GUI y
otros vinculados a la aplicación
Un constructor
Clases internas que implementan interfaces y
permiten crear oyentes
Introducción a la Programación Orientada a Objetos
Interfaces Gráficas
Un constructor incluye instrucciones para:
crear objetos ligados a componentes gráficas
componente
crear objetos oyente para las
gráficas que sean objetos fuente de eventos y
registrarlos
establecer el diagramado y los atributos de las
componentes
insertar las componentes en los contenedores
Algunas de estas instrucciones pueden ser provistas
por un método interno a la clase para favorecer la
modularización de la clase.
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
Se desea modelar una cuenta bancaria sobre la
que se realizan depósitos, extracciones y
consultas de saldo.
La cuenta bancaria tiene asociado un código y un
saldo. El código la identifica unívocamente y es
fijo. El saldo aumenta cuando el titular de la
cuenta efectúa un depósito y disminuye cuando
realiza una extracción.
El usuario está autorizado a girar en descubierto
hasta un monto máximo establecido.
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
El usuario opera con su cuenta bancaria a través
de una interfaz gráfica como la que sigue
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
Si el usuario presiona el botón Depositar en pantalla
aparece un cuadro de diálogo como el que sigue:
Si el usuario presiona el botón OK aparece en pantalla
un...
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
Análogamente si el usuario presiona el botón Extraer en
pantalla aparece un cuadro de diálogo como el que
sigue:
Si el usuario presiona el botón OK aparece en pantalla
un...
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
Si el usuario presiona el botón Consultar Saldos en
pantalla aparece un
O bien
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
class Cajero
public static void main(String[] args) {
GUI_CtaBancaria unaCuenta = new GUI_CtaBancaria();
unaCuenta.setVisible(true);
}
}
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
import …
public class GUI_CtaBancaria extends JFrame {
private CuentaBancaria cuenta;
private Container contenedor;
private JPanel panelAcciones, panelSaldo;
private JButton botonConsultar,
botonExt, botonDep;
public GUI_CtaBancaria() {
…
}
…
}
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
•Crear la Cuenta Bancaria
•Capturar el panel de contenido
•Crear el panel de acciones y de consulta
•Crear cada uno de los tres botones
•Establecer la apariencia de los botones
•Crear los tres oyentes
•Registrar cada oyente a su botón
•Establecer la apariencia de los paneles
•Insertar los botones a los paneles
correspondientes
•Insertar los paneles al panel de contenido
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
public GUI_CtaBancaria() {
cuenta = new CuentaBancaria(3);
contenedor = getContentPane();
panelAcciones = new JPanel();
panelSaldo = new JPanel();
botonDep = new JButton();
botonExt = new JButton();
botonConsultar = new JButton();
setSize(210, 210);
setDefaultCloseOperation(EXIT_ON_CLOSE);
armarGUI();
}
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
public void armarGUI() {
//Apariencia de los botones
botonDep.setPreferredSize(new Dimension(124, 50));
botonDep.setSize(150, 50);
botonDep.setBorder(BorderFactory.createCompoundBorde(
new LineBorder
(new java.awt.Color(0, 0, 0), 1, false),null));
botonExt.setText("Extraer");
botonExt.setPreferredSize(new Dimension(124, 50));
botonExt.setSize(150, 50);
botonExt.setBorder(BorderFactory.createCompoundBorder(
new LineBorder(
new java.awt.Color(0, 0, 0), 1, false),null));
botonConsultar.setText("Consultar Saldo");
botonConsultar.setPreferredSize(new Dimension(136, 30));
botonConsultar.setSize(150, 30);
botonConsultar.setBorder
(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
}
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
public void armarGUI() {
//Crear oyentes
OyenteDepositar oDepositar=new OyenteDepositar();
OyenteExtraer oExtraer = new OyenteExtraer();
OyenteConsultar oConsultar =new OyenteConsultar();
// Registrar oyentes
botonDep.addActionListener(oDepositar);
botonExt.addActionListener(oExtraer);
botonConsultar.addActionListener(oConsultar);
}
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
public void armarGUI() {
…
// Layout del panel contenedor
contenedor.setLayout(new BorderLayout());
// Panel de Acciones
BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
panelAcciones.setBorder(
panelAcciones.setPreferredSize(
panelAcciones.setSize(160, 125);
new Dimension(160, 130));
…
}
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
public void armarGUI() {
…
// Insertar botones a los paneles
panelAcciones.add(botonDep);
panelAcciones.add(botonExt);
panelSaldo.add(botonConsultar);
// Insertar los paneles al contenedor
contenedor.add(panelAcciones, BorderLayout.NORTH);
contenedor.add(panelSaldo, BorderLayout.SOUTH);
}
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
private class OyenteDepositar implements ActionListener {
public void actionPerformed(ActionEvent event){
float dep;
String deposito;
JOptionPane dialogo = new JOptionPane();
deposito = dialogo.showInputDialog
if ((deposito != null) && (deposito.length() > 0)){
( "Ingrese la cantidad a depositar" );
dep = Float.parseFloat(deposito);
dialogo.showMessageDialog(null,
"Usted depositó " + dep+ " pesos","Depósito",
JOptionPane.PLAIN_MESSAGE );
cuenta.depositar(dep);
}
}
}
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
private class OyenteExtraer implements ActionListener {
public void actionPerformed(ActionEvent event){
float ext;
String extraccion;
JOptionPane dialogo = new JOptionPane();
extraccion = dialogo.showInputDialog
if ((extraccion != null) && (extraccion.length() > 0)){
ext = Float.parseFloat(extraccion);
if (cuenta.puedeExtraer(ext)){
( "Ingrese la cantidad a extraer" );
JOptionPane.showMessageDialog( null,
"Usted extrajo "+ext+ " pesos",
"Extracción", JOptionPane.PLAIN_MESSAGE );
else
cuenta.extraer(ext) ;}
dialogo.showMessageDialog( null,
"Usted NO puede extraer esa cantidad“,
"Advertencia", JOptionPane.WARNING MESSAGE );
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Bancaria
public void actionPerformed(ActionEvent event){
private class OyenteConsultar implements ActionListener {
dialogo.showMessageDialog(null,
JOptionPane dialogo = new JOptionPane();
if (cuenta.obtenerSaldo()>=0)
"Usted tiene un saldo de " + cuenta.obtenerSaldo()+
" pesos“,"SALDO“,JOptionPane.INFORMATION_MESSAGE );
else
dialogo.showMessageDialog(null,
"Usted está en rojo en " +
(-1)*cuenta.obtenerSaldo() + " pesos“,
"SALDO", JOptionPane.ERROR_MESSAGE );
}
}
Introducción a la Programación Orientada a Objetos
Caso de Estudio: Cuenta Banca
Comentarios de: Programación Basada en Eventos - Introducción a la Programación Orientada a Objetos (0)
No hay comentarios