Documente Academic
Documente Profesional
Documente Cultură
PROGRAMACION EN JAVA
JAVA SWING
PARTE II
Índice
Contenido
Contenido .................................................................................................................................................. 1
EJEMPLO DE APLICACION Basado en el modelo de clases visto en unidad 2.................................... 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
Subir archivos al aula virtual .................................................................................................................. 14
Ejercicios Adicionales ............................................................................................................................. 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
1
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).
2
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
3
Buscamos la opción ejecutar, Main class, luego examinar y cambiamos el que teníamos por el JFPrincipal
4
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
5
La interfaz contiene:
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
6
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))
7
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
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
8
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).
9
6) Controlador
10
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.
En el código anterior se inicializa la venta, se habilitan e inicializaran los TextFields y se deshabilitan los botones
de iniciarVenta y finalizarVenta.
11
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:
12
Programar el evento ActionPerformed el JButton2 (Introducir Articulo)
Ejecute su programa.
13
Subir archivos al aula virtual
Comprima los archivos realizados en la presente guía con extensión rar o zip y súbalo en el link de la
Guía Practica 4.
Ejercicios Adicionales
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 aplicación que permita llevar un control de materias inscritas por estudiantes de esta
universidad.
Para todos los 3 ejercicios anteriores se requiere que plantee un diagrama de la página 2 antes de realizar las
aplicaciones y súbalos en el link
14
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 Fecha() {
}
int hora;
15
int mins;
int segs;
public Hora() {
}
16
Anexo 2: Orden de creación de clases.
17
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;
}
}
18
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;
}
19
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;
}
20
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;
21
}
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;
}
}
22
Anexo 7: Tienda.
public class Tienda {
public Tienda() {
catalogodeproductos = new CatalogoDeProductos();
23
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);
}
}
}
24