UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE...

25
UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS PROGRAMACION III PROGRAMACION EN JAVA JAVA SWING PARTE II

Transcript of UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE...

Page 1: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

UNIVERSIDAD DE EL SALVADOR

ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS

PROGRAMACION III

PROGRAMACION EN JAVA

JAVA SWING

PARTE II

Page 2: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

1

Índice

Contenido

Contenido .................................................................................................................................................. 1

EJEMPLO DE APLICACION Basado en el modelo de clases visto en unidad 2 .................................... 2

Modelo Modificado de Clase para ser programado en Laboratorio (Venta sin considerar proceso de

pago)...................................................................................................................................................... 2

Creación de Interfaz Gráfica Inicial (Sin Funcionalidad) ..................................................................... 3

Dibujo de la interfaz .......................................................................................................................... 5

Deshabilitar los controles que se quiere que estén sin uso a la hora de inicio de la Venta ............... 7

Creación de clases ................................................................................................................................. 8

Programación de Interfaz .................................................................................................................... 10

Ejercicios ................................................................................................................................................. 14

Anexos .................................................................................................................................................... 15

Anexo 1: Código fuente de clases para datos no primitivos (Fecha y Hora) ...................................... 15

Anexo 2: Orden de creación de clases. ............................................................................................... 17

Anexo 3: Especificación del Producto. ............................................................................................... 18

Anexo 4: Línea de Venta. .................................................................................................................... 19

Anexo 5: Venta. ................................................................................................................................... 20

Anexo 6: Catálogo de Productos. ........................................................................................................ 21

Anexo 7: Tienda. ................................................................................................................................. 23

Anexo 8: Controlador. ......................................................................................................................... 24

Page 3: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

2

EJEMPLO DE APLICACION Basado en el modelo de clases visto en unidad 2

Este modelo ha sido ajustado para programarlo en java, usted puede programarlo en su totalidad si así lo

considera.

Ajustes que se le han hecho son: renombrado la clase Registro(Controlador) y se ha agregado en Tienda un

método para hacer un listado de datos para probar las ventas(agregarProducto).

Modelo Modificado de Clase para ser programado en Laboratorio (Venta sin considerar proceso

de pago).

Page 4: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

3

Creación de Interfaz Gráfica Inicial (Sin Funcionalidad)

Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

Por default estos proyectos traen un archivo java class como principal.

Cambiar el Principal hacia un jframe.

Sobre el nombre del paquete presionamos clic derecho y creamos un Formulario jframe con el nombre JFPrincipal

Cambiar el archivo de ejecución predeterminado

Presionamos clic derecho en el proyecto, luego clic en establecer configuración, clic en personalizar.

Page 5: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

4

Buscamos la opción ejecutar, Main class, luego examinar y cambiamos el que teníamos por el JFPrincipal

Luego presionamos aceptar

Eliminamos el programa antiguo principal

En el árbol del proyecto presionamos clic derecho, clic en eliminar.

Chequeamos eliminación segura y luego reestructurar.

Page 6: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

5

Luego podemos ejecutar el proyecto para ver que está listo para comenzar a dibujar la interfaz gráfica.

Dibujo de la interfaz

Haga la siguiente interfaz utilizando la paleta

Page 7: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

6

La interfaz contiene:

Objeto Cantidad Contenido/valor que contendrá

JButton 3 Iniciar Venta

Introducir Articulo

Finalizar Venta

JLabel 6 Idarticulo, Descripción, Cantidad, Precio Total

Y TotalFactura

JTextField 6 Idarticulo, Descripción, Cantidad, Precio Total

Y Total de la Factura

JTable 1 n Líneas de Venta

Modifique las propiedades text de los botones y etiquetas según se muestra. En los TextFields solo suprimir valores

mostrados, presionando clic luego F2 y borrando el texto.

La tabla requiere otro tratamiento, presione clic derecho, clic en contenido de la tabla.

Luego se entra a la edición en la opción columna, se inserta una columna y se editan los valores de los títulos de las

columnas como se muestra

Page 8: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

7

Deshabilitar los controles que se quiere que estén sin uso a la hora de inicio de la Venta

Presionamos control+ Clic en cada control(todos losTextFields, además de los botones (Agregar Articulo y Finalizar

Venta))

Luego en la ventana de propiedades, desmarcamos la propiedad enabled.

Si corremos el programa veremos algo como lo siguiente

Page 9: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

8

Creación de clases

Creación de Clases de tipo de Dato No Primitivo

Cree las clases Fecha y Hora con los atributos:

dia, mes y anio para Fecha y hora, mins y segs para Hora

Hágale sus respectivos contructores con parámetros y sin parámetros, además de los métodos Set y Get.

Si tiene problemas para desarrollarlo, consulte el anexo 1

Cree las clases, de la más independiente a la más dependiente (Anexo 2)

1) EspecificacionDelProducto

Defina la clase con los atributos idproducto(o articuloID), descripción y precio (con sus métodos gets y sets),

además defina los constructores: uno sin parámetros, otro con parámetros. El tipo Dinero será considerado como

double y Texto como String.

Si tiene problemas para desarrollarlo, consulte el anexo 3

2) LineaDeVenta

Defina la clase con los atributos cantidad y producto de tipos entero y EspecificacionDelProduto

respectivamente(con sus métodos gets y sets). Debe programar el constructor con y sin parámetros. Ademas debe

crear los métodos adicionales que se muestran.

Si tiene problemas para desarrollarlo, consulte el anexo 4

Page 10: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

9

3) Venta

Crear la Clase de Venta según el diagrama e implemente una colección denominada lineasdeventas para

almacenar los n artículos que se añadirán en la línea de ventas (por la multiplicidad de 1 a n)

Creamos el constructor con Fecha y Hora y Dejamos la interacción con la colección mediante métodos

adicionales como: agregarLineaDeVenta(Integer cantidad, EspecificacionProducto item)

Y validarItem(String cod) en el que se verifica si existe un artículo(este método es opcional).

Si tiene problemas para desarrollarlo, consulte el anexo 5

4) CatalogoDeProductos

Crear la Clase de CatalogoDeProductos según el diagrama e implemente una colección denominada

listadeproductos para almacenar los n productos(Especificaciones) que serán parte del catálogo (por la

multiplicidad de 1 a n), además implemente los métodos que se muestran y uno adicional que le permita validar si

un producto está en el listado(validarProductoCatalogo).

Si tiene problemas para desarrollarlo, consulte el anexo 6

5) Tienda

Crear la Clase de Tienda según el diagrama e implementar los métodos que se muestran.

agregarProductos llenará el catalogo de Productos con la cantidad de productos que usted estime convenientes

Si tiene problemas para desarrollarlo, consulte el anexo 7

Page 11: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

10

6) Controlador

Creamos una clase y los métodos que indica el diagrama

CrearNuevaVenta: Haga un objeto de tipo hora y otro de fecha y con esos creara una instancia de Venta y otra de

Tienda.

IntroducirArticulo: Agrega una línea de venta(método de clase Venta) siempre y cuando este no esté en el

arraylist de líneas de venta.

FinalizarVenta: Se imprime el detalle de lo vendido y se le indica a la venta que está completa.

getArticulo: Recupera las especificaciones de un Artículo en base a su código.

agregaProductos: Llena el arreglo de Productos con la cantidad de artículos que se estime conveniente para

pruebas.

Si tiene problemas para desarrollarlo consulte el anexo 8.

Al finalizar el controlador, procederemos a hacer los ajustes de programación en la interfaz grafica

Programación de Interfaz

Entramos al JFrame en la pestaña de código fuente y en la zona de declaraciones introducimos el código que se

muestra.

Page 12: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

11

Con ese código hemos hecho un objeto para interactuar con la JTable, una instancia de DecimalFormat para

imprimir los números con dos decimales y una instancia de controlador, además de variables para extraer los

datos de los TextFields.

Programamos la asignación de la instancia del manejador de la JTable y cargamos los productos.

Luego se programa el evento ActionPerformed el JButton1(IniciarVenta)

En el código anterior se inicializa la venta, se habilitan e inicializaran los TextFields y se deshabilitan los botones

de iniciarVenta y finalizarVenta.

Page 13: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

12

Se creara un método que contenga los llenados del arreglo de líneas de Venta y de la Grid , este método se

invocara posteriormente desde el botón de Introducir Artículos:

Page 14: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

13

Programar el evento ActionPerformed el JButton2 (Introducir Articulo)

Programar el evento ActionPerformed el JButton3 (Finalizar Venta)

Ejecute su programa.

Page 15: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

14

Ejercicios

1. Cree una aplicación que permita comprar boletos para eventos (conciertos, juegos, etc.). Asuma que

quien tendrá acceso a la aplicación será el propio cliente.

2. Cree una aplicación que permita llevar un control de consultas de pacientes de una clínica.

3. Cree una calculadora típica en entorno de ventanas.

4. Cree un frame con tres Radio Buttons, que al igual que el ejercicio 1 de la guía anterior, al hacer clic en

uno de ellos, cambie el color del frame según el botón

Page 16: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

15

Anexos

Anexo 1: Código fuente de clases para datos no primitivos (Fecha y Hora)

public class Fecha {

int dia;

int mes;

int anio;

public int getDia() {

return dia;

}

public void setDia(int dia) {

this.dia = dia;

}

public int getMes() {

return mes;

}

public void setMes(int mes) {

this.mes = mes;

}

public int getAnio() {

return anio;

}

public void setAnio(int anio) {

this.anio = anio;

}

public Fecha() {

}

public Fecha(int dia, int mes, int anio) {

this.dia = dia;

this.mes = mes;

this.anio = anio;

}

public String toString() {

return dia + "/" + mes + "/" + anio;

}

}

public class Hora {

int hora;

Page 17: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

16

int mins;

int segs;

public int getHora() {

return hora;

}

public void setHora(int hora) {

this.hora = hora;

}

public int getMins() {

return mins;

}

public void setMins(int mins) {

this.mins = mins;

}

public int getSegs() {

return segs;

}

public void setSegs(int segs) {

this.segs = segs;

}

public Hora() {

}

public Hora(int hora, int mins, int segs) {

this.hora = hora;

this.mins = mins;

this.segs = segs;

}

public String toString() {

return hora + ":" + mins + ":" + segs;

}

}

Page 18: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

17

Anexo 2: Orden de creación de clases.

Page 19: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

18

Anexo 3: Especificación del Producto.

public class EspecificacionDelProducto {

private String idarticulo;

private String descripcion;

private double precio;

public double getPrecio() {

return precio;

}

public void setPrecio(double precio) {

this.precio = precio;

}

public String getIdarticulo() {

return idarticulo;

}

public void setIdarticulo(String idarticulo) {

this.idarticulo = idarticulo;

}

public String getDescripcion() {

return descripcion;

}

public void setDescripcion(String descripcion) {

this.descripcion = descripcion;

}

public EspecificacionDelProducto() {

}

public EspecificacionDelProducto(String idarticulo, String descripcion, double precio) {

this.idarticulo = idarticulo;

this.descripcion = descripcion;

this.precio = precio;

}

public String toString() {

return "Id:" + idarticulo + ", Descripcion: " + descripcion + ", Precio:" + precio;

}

}

Page 20: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

19

Anexo 4: Línea de Venta.

public class LineaDeVenta {

private int cantidad;

private EspecificacionDelProducto articulo;

public EspecificacionDelProducto getArticulo() {

return articulo;

}

public String getIdArticulo() {

return articulo.getIdarticulo();

}

public void setArticulo(EspecificacionDelProducto articulo) {

this.articulo = articulo;

}

public int getCantidad() {

return cantidad;

}

public void setCantidad(Integer cantidad) {

this.cantidad = cantidad;

}

public double getSubTotal() {

return cantidad*articulo.getPrecio();

}

public LineaDeVenta(){

}

public LineaDeVenta(int cantidad, EspecificacionDelProducto articulo){

this.cantidad=cantidad;

this.articulo=articulo;

}

}

Page 21: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

20

Anexo 5: Venta.

public class Venta { Fecha fecha; Hora hora; boolean esCompleta ; DecimalFormat precision2 = new DecimalFormat("0.00"); public ArrayList<LineaDeVenta> lineasdeventas = new ArrayList<LineaDeVenta>(); public Fecha getFecha() { return fecha; } public void setFecha(Fecha fecha) { this.fecha = fecha; } public Hora getHora() { return hora; } public void setHora(Hora hora) { this.hora = hora; } public boolean isEsCompleta() { return esCompleta; } public void setEsCompleta(boolean esCompleta) { this.esCompleta = esCompleta; } public void completar(){ setEsCompleta(true); } public Venta(){ } public Venta(Fecha fecha,Hora hora){ this.fecha = fecha; this.hora = hora; }

public void agregarLineaDeVenta(int cantidad, EspecificacionDelProducto item){ LineaDeVenta lineadeventa; lineadeventa = new LineaDeVenta(cantidad,item); lineasdeventas.add(lineadeventa); } public boolean validarItem(String cod) { int buscado = 0; for (LineaDeVenta pivote2 : lineasdeventas) { if (pivote2.getIdArticulo().equalsIgnoreCase(cod)) { buscado = 1; } } if (buscado == 1) {

Page 22: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

21

return true; } else { return false; } } public Double getTotal() { Double acumventas = 0.0; for (LineaDeVenta pivote : lineasdeventas) { acumventas = acumventas + pivote.getSubTotal(); } return acumventas; } @Override public String toString() { double acumventas = 0.0; String cadena=""; double total; for (LineaDeVenta pivote : lineasdeventas) { total=pivote.getCantidad() * pivote.getArticulo().getPrecio(); cadena=cadena+"id:"+pivote.getArticulo().getIdarticulo()+" Descripcion: "+ pivote.getArticulo().getDescripcion()+" Cantidad:"+ precision2.format(pivote.getCantidad()).toString()+" Precio:"+ precision2.format(pivote.getArticulo().getPrecio()).toString()+ "Sub Total:"+ precision2.format(total).toString()+"\n"; acumventas = acumventas + total; } cadena=cadena+"Total Factura= "+precision2.format(acumventas).toString(); return cadena; } }

Anexo 6: Catálogo de Productos.

public class CatalogoDeProductos {

public CatalogoDeProductos(){

}

public ArrayList<EspecificacionDelProducto> listadeproductos = new ArrayList<>();

public final void AgregarProducto(EspecificacionDelProducto p){

listadeproductos.add(p);

}

public boolean validarProductoCatalogo(String cod) {

int buscado = 0;

for (EspecificacionDelProducto pivote : listadeproductos) {

if (pivote.getIdarticulo().equalsIgnoreCase(cod)) {

buscado = 1;

}

}

if (buscado==1) return true; else return false;

Page 23: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

22

}

public EspecificacionDelProducto getProducto(String cod) {

EspecificacionDelProducto art;

art = new EspecificacionDelProducto();

for (EspecificacionDelProducto pivote : listadeproductos) {

if (pivote.getIdarticulo().equalsIgnoreCase(cod)) {

art.setIdarticulo(pivote.getIdarticulo());

art.setDescripcion(pivote.getDescripcion());

art.setPrecio(pivote.getPrecio());

}

}

return art;

}

}

Page 24: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

23

Anexo 7: Tienda.

public class Tienda {

public Venta venta;

public CatalogoDeProductos catalogodeproductos;

public Tienda() {

catalogodeproductos = new CatalogoDeProductos();

}

public void agregarVenta(Venta v) {

venta = v;

}

public final void agregarProductos() {

EspecificacionDelProducto p1,p2, p3, p4;

p1 = new EspecificacionDelProducto("01", "Camisa talla XL ", 25.1);

p2 = new EspecificacionDelProducto("02", "Camisa talla L ", 22.);

p3 = new EspecificacionDelProducto("03", "Camisa talla M ", 15.1);

p4 = new EspecificacionDelProducto("04", "Camisa talla S ", 12.5);

catalogodeproductos.AgregarProducto(p1);

catalogodeproductos.AgregarProducto(p2);

catalogodeproductos.AgregarProducto(p3);

catalogodeproductos.AgregarProducto(p4);

}

}

Page 25: UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE ...aula.fia.ues.edu.sv/materialpublico/prn315/2016/... · Ejecute el IDE Netbeans y cree un proyecto de tipo Java Application,

24

Anexo 8: Controlador.

public class Controlador {

public Tienda tienda;

public Venta v;

Fecha fecha;

Hora hora;

public void crearNuevaVenta() {

tienda = new Tienda();

fecha = new Fecha(29, 9, 2014);

hora = new Hora(10, 00, 00);

v = new Venta(fecha, hora);

tienda.agregarVenta(v);

tienda.agregarProductos();

}

public void FinalizarVenta() {

JOptionPane.showMessageDialog(null, v.toString());

v.completar();

}

public void introducirArticulo(int cantidad, String idarticulo) {

EspecificacionDelProducto art;

if (tienda.catalogodeproductos.validarProductoCatalogo(idarticulo)) {

art = tienda.catalogodeproductos.getProducto(idarticulo);

v.agregarLineaDeVenta(cantidad, art);

}

}

}