Sie sind auf Seite 1von 24

jTable con base de datos U.N.J.F.S.C. F.I.

Ing. Carlos Palacios Garcia Pgina 1


JTABLE CON BASE DE DATOS (Versin Inicial)



package PaqueteModeloDeTablaConVenta_Detalle;
import javax.swing.table.DefaultTableModel;
public class ClaseModeloDeTabla extends DefaultTableModel
{
}

package PaqueteModeloDeTablaConVenta_Detalle;
import java.util.Vector;
import javax.swing.table.TableColumn;
public class JFrameVenta_Detalle extends javax.swing.JFrame
{ ClaseModeloDeTabla oModeloDeTabla=new ClaseModeloDeTabla();

public JFrameVenta_Detalle()
{ initComponents();
oModeloDeTabla.addColumn("Cantidad");
oModeloDeTabla.addColumn("Producto");
oModeloDeTabla.addColumn("Precio");
oModeloDeTabla.addColumn("SubTotal");

jTableVenta_Detalle.setModel(oModeloDeTabla);

jTableVenta_Detalle.getTableHeader().setReorderingAllowed(false);
TableColumn columnaCantidad = jTableVenta_Detalle.getColumnModel().getColumn(0);
columnaCantidad.setPreferredWidth(65);

TableColumn columnaProducto = jTableVenta_Detalle.getColumnModel().getColumn(1);
columnaProducto.setPreferredWidth(150);
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 2

TableColumn columnaPrecio = jTableVenta_Detalle.getColumnModel().getColumn(2);
columnaPrecio.setPreferredWidth(60);

TableColumn columnaSubTotal = jTableVenta_Detalle.getColumnModel().getColumn(3);
columnaSubTotal.setPreferredWidth(60);
}

private void initComponents()
{ jScrollPaneTabla = new javax.swing.JScrollPane();
jTableVenta_Detalle = new javax.swing.JTable();
jButtonAgregar = new javax.swing.JButton();
jButtonEliminar = new javax.swing.JButton();
jButtonSalir = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

jScrollPaneTabla.setViewportView(jTableVenta_Detalle);

getContentPane().add(jScrollPaneTabla, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 80, 330, 180));

jButtonAgregar.setText("Agregar");
jButtonAgregar.addActionListener(new java.awt.event.ActionListener()
{ public void actionPerformed(java.awt.event.ActionEvent evt)
{ jButtonAgregarActionPerformed(evt);
}
});
getContentPane().add(jButtonAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 320, 100, -1));

jButtonEliminar.setText("Eliminar");
jButtonEliminar.addActionListener(new java.awt.event.ActionListener()
{ public void actionPerformed(java.awt.event.ActionEvent evt)
{ jButtonEliminarActionPerformed(evt);
}
});
getContentPane().add(jButtonEliminar, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 320, 100, -1));

jButtonSalir.setText("Salir");
jButtonSalir.addActionListener(new java.awt.event.ActionListener()
{ public void actionPerformed(java.awt.event.ActionEvent evt)
{ jButtonSalirActionPerformed(evt);
}
});
getContentPane().add(jButtonSalir, new org.netbeans.lib.awtextra.AbsoluteConstraints(290, 320, 90, -1));
pack();
}

private void jButtonAgregarActionPerformed(java.awt.event.ActionEvent evt)
{ Vector oVector=new Vector();
oModeloDeTabla.addRow(oVector);
}
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 3

private void jButtonEliminarActionPerformed(java.awt.event.ActionEvent evt)
{ oModeloDeTabla.removeRow(jTableVenta_Detalle.getSelectedRow());
}

private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt)
{ dispose();
}

private javax.swing.JButton jButtonAgregar;
private javax.swing.JButton jButtonEliminar;
private javax.swing.JButton jButtonSalir;
private javax.swing.JScrollPane jScrollPaneTabla;
private javax.swing.JTable jTableVenta_Detalle;
}

package PaqueteModeloDeTablaConVenta_Detalle;
public class ClasePrincipal
{ public static void main(String[] args)
{ JFrameVenta_Detalle frame=new JFrameVenta_Detalle();
frame.setVisible(true);
}
}























jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 4

JTABLE CON BASE DE DATOS (Versin Intermedia)




jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 5
package PaqueteModeloDeTabla;
import javax.swing.table.DefaultTableModel;
public class ClaseModeloDeTabla extends DefaultTableModel
{ public boolean isCellEditable(int row,int column)
{ if(column==3)
{ return false;
}
else
{ return true;
}
}
}


package PaqueteModeloDeTabla;
public class ClaseProducto
{ private int producto_id;
private String nombre;
private double precio;
private double costo;
public ClaseProducto(int producto_id,String nombre,double costo,double precio)
{ this.producto_id=producto_id;
this.nombre=nombre;
this.costo=costo;
this.precio=precio;
}

public ClaseProducto()
{
}
public int getProducto_id()
{ return producto_id;
}

public void setProducto_id(int producto_id)
{ this.producto_id = producto_id;
}

public String getNombre()
{ return nombre;
}

public void setNombre(String nombre)
{ this.nombre = nombre;
}

jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 6
public double getPrecio()
{ return precio;
}

public void setPrecio(double precio)
{ this.precio = precio;
}

public String toString()
{ return this.nombre;
}

public double getCosto()
{ return costo;
}

public void setCosto(double costo)
{ this.costo = costo;
}
}

package PaqueteModeloDeTabla;
public class ClaseVenta_Detalle
{ private int venta_id;
private int producto_id;
private int cantidad;
private double costo;
private double precio;

public int getVenta_id()
{ return venta_id;
}

public void setVenta_id(int venta_id)
{ this.venta_id = venta_id;
}

public int getProducto_id()
{ return producto_id;
}

public void setProducto_id(int producto_id)
{ this.producto_id = producto_id;
}

public int getCantidad()
{ return cantidad;
}

jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 7
public void setCantidad(int cantidad)
{ this.cantidad = cantidad;
}

public double getCosto()
{ return costo;
}

public void setCosto(double costo)
{ this.costo = costo;
}

public double getPrecio()
{ return precio;
}

public void setPrecio(double precio)
{ this.precio = precio;
}
}

package PaqueteModeloDeTabla;
public class ClaseCalculoDeSubtotal
{ private int cantidad;
private double precio;
private double subTotalParcial;
public double getSubTotal_Parcial()
{ return subTotalParcial;
}

public void setSubTotal_Parcial()
{ this.subTotalParcial = cantidad*precio;
}

public int getCantidad()
{ return cantidad;
}

public void setCantidad(int cantidad)
{ this.cantidad = cantidad;
}
public double getPrecio()
{ return precio;
}

public void setPrecio(double precio)
{ this.precio = precio;
}
}
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 8

package PaqueteModeloDeTabla;
import java.util.Vector;
import javax.swing.DefaultCellEditor;
import javax.swing.JOptionPane;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableColumn;
public class JFrameVenta_Detalle extends javax.swing.JFrame
{ // Se crea el objeto oModeloDeTabla del tipo ClaseModeloDeTabla
// ClaseModeloDeTabla es derivada de DefaultTableModel)
ClaseModeloDeTabla oModeloDeTabla=new ClaseModeloDeTabla();

public JFrameVenta_Detalle()
{ initComponents();

// Agregar columNas al modelo de tabla
oModeloDeTabla.addColumn("Cantidad");
oModeloDeTabla.addColumn("Producto");
oModeloDeTabla.addColumn("Precio");
oModeloDeTabla.addColumn("SubTotal");

//Se establece el modelo de datos de la tabla jTableVenta_Detalle
jTableVenta_Detalle.setModel(oModeloDeTabla);

jTableVenta_Detalle.getTableHeader().setReorderingAllowed(false);

TableColumn columnaCantidad = jTableVenta_Detalle.getColumnModel().getColumn(0);
columnaCantidad.setPreferredWidth(65);

TableColumn columnaProducto = jTableVenta_Detalle.getColumnModel().getColumn(1);
columnaProducto.setPreferredWidth(150);

TableColumn columnaPrecio = jTableVenta_Detalle.getColumnModel().getColumn(2);
columnaPrecio.setPreferredWidth(40);

TableColumn columnaSubTotal = jTableVenta_Detalle.getColumnModel().getColumn(3);
columnaSubTotal.setPreferredWidth(40);

// Se carga el objeto ComboBoxProducto con los respectivos Items
CargarComboProducto();

// Llamada del mtodo que incrusta el ComboBoxProducto a la tabla jTableVenta_Detalle
IncrustarComboBoxEnJTable();
/*
addTableModelListener(TableModelListener tme): Agrega a un listener a la lista que se notifica cada vez
que ocurre un cambio en el modelo de tabla. El evento ocurre cuando se modifica el contenido de la
tabla.
*/
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 9

oModeloDeTabla.addTableModelListener( new TableModelListener()
{ // Invocado cuando el TableModel de la tabla genera un TableModelEvent
public void tableChanged(TableModelEvent tme)
{ EventoTableModel(tme);
}
});
}

// Mtodo que carga de datos al comboBox jComboBoxProducto
public void CargarComboProducto()
{ jComboBoxProducto.addItem(new ClaseProducto(1,"Cerveza Cristal 650 Ml",28,30));
jComboBoxProducto.addItem(new ClaseProducto(2,"Cerveza Pilsen 650 Ml",27,29));
j ComboBoxProducto.addItem(new ClaseProducto(3,"Cerveza Dorada 650 Ml",24,26));
}

public void IncrustarComboBoxEnJTable()
{ /* getColumnModel().getColumn(i): Devuelve el TableColumnModel (columna de modelo de
tabla) que contiene toda la informacin de la columna de la tabla. (i) corresponde a la
columna i de la tabla. El valor i de la primera columna es 0
*/

TableColumn columnaProducto = jTableVenta_Detalle.getColumnModel().getColumn(1);

// Configuracin de un ComboBox como editor de celda
columnaProducto.setCellEditor(new DefaultCellEditor(jComboBoxProducto));
}

private void EventoTableModel(javax.swing.event.TableModelEvent evt)
{ if (evt.getColumn()==0||evt.getColumn()==2)
{ if (jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),1)!=null)
{ if(jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),0).equals(""))
{ jTableVenta_Detalle.setValueAt(0,jTableVenta_Detalle.getSelectedRow(), 0);
}
if(jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),2).equals(""))
{ jTableVenta_Detalle.setValueAt(0,jTableVenta_Detalle.getSelectedRow(), 2);
}
CalculoSubTotal_Parcial(jTableVenta_Detalle.getSelectedRow(),
jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(), 0).toString(),
jTableVenta_Detalle.getValueAt( jTableVenta_Detalle.getSelectedRow(), 2).toString());
}
}
}

private void initComponents()
{ jComboBoxProducto = new javax.swing.JComboBox();
jButtonAgregar = new javax.swing.JButton();
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 10
jButtonEliminar = new javax.swing.JButton();
jButtonSalir = new javax.swing.JButton();
jLabelNroDeItems = new javax.swing.JLabel();
jTextFieldNrodeItems = new javax.swing.JTextField();
jScrollPaneTabla = new javax.swing.JScrollPane();
jTableVenta_Detalle = new javax.swing.JTable();
jButtonImprimir = new javax.swing.JButton();

jComboBoxProducto.addItemListener(new java.awt.event.ItemListener()
{ public void itemStateChanged(java.awt.event.ItemEvent evt)
{ jComboBoxProductoItemStateChanged(evt);
}
});

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

jButtonAgregar.setText("Agregar");
jButtonAgregar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jButtonAgregarActionPerformed(evt);
}
});
getContentPane().add(jButtonAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 310, 90, -1));

jButtonEliminar.setText("Eliminar");
jButtonEliminar.addActionListener(new java.awt.event.ActionListener()
{ public void actionPerformed(java.awt.event.ActionEvent evt)
{
jButtonEliminarActionPerformed(evt);
}
});
getContentPane().add(jButtonEliminar, new org.netbeans.lib.awtextra.AbsoluteConstraints(321, 310, 90, -1));

jButtonSalir.setText("Salir");
jButtonSalir.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonSalirActionPerformed(evt);
}
});
getContentPane().add(jButtonSalir, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 310, 90, -1));

jLabelNroDeItems.setText("NroDeItems:");
getContentPane().add(jLabelNroDeItems, new org.netbeans.lib.awtextra.AbsoluteConstraints(400, 350, 70, -1));
getContentPane().add(jTextFieldNrodeItems, new org.netbeans.lib.awtextra.AbsoluteConstraints(520, 350, 50, -1));
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 11

jScrollPaneTabla.setViewportView(jTableVenta_Detalle);

getContentPane().add(jScrollPaneTabla, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 110, 510, 180));

jButtonImprimir.setText("Imprimir");
jButtonImprimir.addActionListener(new java.awt.event.ActionListener()
{ public void actionPerformed(java.awt.event.ActionEvent evt)
{ jButtonImprimirActionPerformed(evt);
}
});
getContentPane().add(jButtonImprimir, new org.netbeans.lib.awtextra.AbsoluteConstraints(183, 310, 90, -1));

pack();
}

private void jButtonAgregarActionPerformed(java.awt.event.ActionEvent evt)
{
Vector oVector=new Vector();

oModeloDeTabla.addRow(oVector);
jTextFieldNrodeItems.setText(oModeloDeTabla.getRowCount()+"");
}

private void jButtonEliminarActionPerformed(java.awt.event.ActionEvent evt)
{
if(jTableVenta_Detalle.getSelectedRow()==-1)
{
JOptionPane.showMessageDialog(null,"Seleccione una fila");
}
else
{
oModeloDeTabla.removeRow(jTableVenta_Detalle.getSelectedRow());
}
}

private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt)
{ dispose();
}

private void jButtonImprimirActionPerformed(java.awt.event.ActionEvent evt)
{
System.out.println("Cantidad :"+jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),0));
ClaseProducto oProducto= (ClaseProducto)jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(), 1);
System.out.println("Producto : "+oProducto.getProducto_id());
System.out.println("Costo : "+oProducto.getCosto());
System.out.println("Precio : "+jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),2));
}
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 12

// Se dispara cuando se seleciona un items
private void jComboBoxProductoItemStateChanged(java.awt.event.ItemEvent evt)
{ if (evt.getStateChange() == java.awt.event.ItemEvent.SELECTED&&jTableVenta_Detalle.getSelectedRow()!=-1)
{
ClaseProducto itemComboBox=(ClaseProducto) jComboBoxProducto.getSelectedItem();
jTableVenta_Detalle.setValueAt(itemComboBox.getPrecio(),jTableVenta_Detalle.getSelectedRow(), 2);
CalculoSubTotal_Parcial(jTableVenta_Detalle.getSelectedRow(),
jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),
0).toString(),Double.toString(itemComboBox.getPrecio()));
// CalculoDeMonto();
}
}

private void CalculoSubTotal_Parcial(int i,String cantidad, String precio)
{
ClaseCalculoDeSubtotal oCalculo = new ClaseCalculoDeSubtotal();
oCalculo.setCantidad(Integer.parseInt(cantidad));
oCalculo.setPrecio(Double.parseDouble(precio));
oCalculo.setSubTotal_Parcial();

jTableVenta_Detalle.setValueAt(oCalculo.getSubTotal_Parcial(),i,3);
}
// Variables declaration - do not modify
private javax.swing.JButton jButtonAgregar;
private javax.swing.JButton jButtonEliminar;
private javax.swing.JButton jButtonImprimir;
private javax.swing.JButton jButtonSalir;
private javax.swing.JComboBox jComboBoxProducto;
private javax.swing.JLabel jLabelNroDeItems;
private javax.swing.JScrollPane jScrollPaneTabla;
private javax.swing.JTable jTableVenta_Detalle;
private javax.swing.JTextField jTextFieldNrodeItems;
}

package PaqueteModeloDeTabla;
public class ClasePrincipal
{
public static void main(String[] args)
{
JFrameVenta_Detalle frame=new JFrameVenta_Detalle();
frame.setVisible(true);
}
}
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 13






















JTABLE CON BASE DE DATOS (Versin PreFinal)









jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 14

























package PaqueteModeloDeTabla;
import javax.swing.table.DefaultTableModel;
public class ClaseModeloDeTabla extends DefaultTableModel
{
//Este metodo es para configurar las columnas editables
public boolean isCellEditable(int row,int column)
{
if(column==3)
{
return false;
}
else
{
return true;
}
}
}




jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 15
package PaqueteModeloDeTabla;
public class ClaseProducto
{ private int producto_id;
private String nombre;
private double precio;
private double costo;
public ClaseProducto(int producto_id,String nombre,double costo,double precio)
{ this.producto_id=producto_id;
this.nombre=nombre;
this.costo=costo;
this.precio=precio;
}

public ClaseProducto()
{
}

public int getProducto_id()
{ return producto_id;
}

public void setProducto_id(int producto_id)
{ this.producto_id = producto_id;
}

public String getNombre()
{ return nombre;
}

public void setNombre(String nombre)
{ this.nombre = nombre;
}

public double getPrecio()
{ return precio;
}

public void setPrecio(double precio)
{ this.precio = precio;
}

public String toString()
{ return this.nombre;
}

public double getCosto()
{ return costo;
}

public void setCosto(double costo)
{ this.costo = costo;
}
}
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 16
package PaqueteModeloDeTabla;
public class ClaseVenta_Detalle
{ private int venta_id;
private int producto_id;
private int cantidad;
private double costo;
private double precio;

public int getVenta_id()
{ return venta_id;
}

public void setVenta_id(int venta_id)
{ this.venta_id = venta_id;
}

public int getProducto_id()
{ return producto_id;
}

public void setProducto_id(int producto_id)
{ this.producto_id = producto_id;
}

public int getCantidad()
{ return cantidad;
}

public void setCantidad(int cantidad)
{ this.cantidad = cantidad;
}

public double getCosto()
{ return costo;
}

public void setCosto(double costo)
{ this.costo = costo;
}

public double getPrecio()
{ return precio;
}

public void setPrecio(double precio)
{
this.precio = precio;
}
}


jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 17
package PaqueteModeloDeTabla;
public class ClaseCalculoDeSubtotal
{ private int cantidad;
private double precio;
private double subTotalParcial;
public double getSubTotal_Parcial()
{ return subTotalParcial;
}

public void setSubTotal_Parcial()
{ this.subTotalParcial = cantidad*precio;
}

public int getCantidad()
{ return cantidad;
}

public void setCantidad(int cantidad)
{ this.cantidad = cantidad;
}

public double getPrecio()
{ return precio;
}

public void setPrecio(double precio)
{ this.precio = precio;
}
}

package PaqueteModeloDeTabla;
public class ClaseCalculoDeTotal
{ private double subTotal;
private double igv;
private double total;

public ClaseCalculoDeTotal()
{ this.subTotal=0;
this.igv=0;
this.total=0;
}
public double getSubTotal()
{ return subTotal;
}

public void setSubTotal(double subTotal_temporal)
{ this.subTotal = this.subTotal+subTotal_temporal;
}

jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 18
public double getIgv()
{ return igv;
}

public void setIgv()
{ this.igv = subTotal*0.19;
}

public double getTotal()
{ return total;
}

public void setTotal()
{ this.total = igv+subTotal ;
}
}



package PaqueteModeloDeTabla;
import java.util.Vector;
import javax.swing.DefaultCellEditor;
import javax.swing.JOptionPane;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableColumn;
public class JFrameVenta_Detalle extends javax.swing.JFrame
{ // Se crea el objeto oModeloDeTabla del tipo ClaseModeloDeTabla
// ClaseModeloDeTabla es derivada de DefaultTableModel)
ClaseModeloDeTabla oModeloDeTabla=new ClaseModeloDeTabla();

// constructor
public JFrameVenta_Detalle()
{ initComponents();

// Agregar columas al modelo de tabla
oModeloDeTabla.addColumn("Cantidad");
oModeloDeTabla.addColumn("Producto");
oModeloDeTabla.addColumn("Precio");
oModeloDeTabla.addColumn("SubTotal");

//Se establece el modelo de datos de la tabla jTableVenta_Detalle
jTableVenta_Detalle.setModel(oModeloDeTabla);

jTableVenta_Detalle.getTableHeader().setReorderingAllowed(false);

jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 19
TableColumn columnaCantidad = jTableVenta_Detalle.getColumnModel().getColumn(0);
columnaCantidad.setPreferredWidth(65);

TableColumn columnaProducto = jTableVenta_Detalle.getColumnModel().getColumn(1);
columnaProducto.setPreferredWidth(150);

TableColumn columnaPrecio = jTableVenta_Detalle.getColumnModel().getColumn(2);
columnaPrecio.setPreferredWidth(40);

TableColumn columnaSubTotal = jTableVenta_Detalle.getColumnModel().getColumn(3);
columnaSubTotal.setPreferredWidth(40);

// Se carga el objeto ComboBoxProducto con los respectivos Items
CargarComboProducto();

// Llamada del mtodo que incrusta el ComboBoxProducto a la tabla jTableVenta_Detalle
IncrustarComboBoxEnJTable();

/*
addTableModelListener(TableModelListener tme): Agrega a un listener a la lista que se notifica cada vez
que ocurre un cambio en el modelo de datos. El evento ocuure cuando se modifica el contenido de la tabla
*/
oModeloDeTabla.addTableModelListener( new TableModelListener()
{ // Invocado cuando el TableModel de la tabla genera un TableModelEvent
public void tableChanged(TableModelEvent tme)
{ EventoTableModel(tme);
}
});
}

// Mtodo que carga de datos al comboBox jComboBoxProducto
public void CargarComboProducto()
{ jComboBoxProducto.addItem(new ClaseProducto(1,"Cerveza Cristal 650 Ml",28,30));
jComboBoxProducto.addItem(new ClaseProducto(2,"Cerveza Pilsen 650 Ml",27,29));
jComboBoxProducto.addItem(new ClaseProducto(3,"Cerveza Dorada 650 Ml",24,26));
}

public void IncrustarComboBoxEnJTable()
{ /* getColumnModel().getColumn(i): Devuelve el TableColumnModel (columna de modelo de tabla)
que contiene toda la informacin de la columna de la tabla. (i) corresponde a la columna i de la
tabla. El valor i de la primera columna es 0
*/

TableColumn columnaProducto = jTableVenta_Detalle.getColumnModel().getColumn(1);

// Configuracin de un ComboBox como editor de celda
columnaProducto.setCellEditor(new DefaultCellEditor(jComboBoxProducto));
}


jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 20
private void EventoTableModel(javax.swing.event.TableModelEvent evt)
{ if (evt.getColumn()==0||evt.getColumn()==2)
{ if (jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),1)!=null)
{ if(jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),0).equals(""))
{ jTableVenta_Detalle.setValueAt(0,jTableVenta_Detalle.getSelectedRow(), 0);
}
if(jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),2).equals(""))
{ jTableVenta_Detalle.setValueAt(0,jTableVenta_Detalle.getSelectedRow(), 2);
}
CalculoSubTotal_Parcial(jTableVenta_Detalle.getSelectedRow(),
jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(), 0).toString(),
jTableVenta_Detalle.getValueAt( jTableVenta_Detalle.getSelectedRow(), 2).toString());
CalculoDeMonto();
}
}
}

private void initComponents()
{ jComboBoxProducto = new javax.swing.JComboBox();
jButtonAgregar = new javax.swing.JButton();
jButtonEliminar = new javax.swing.JButton();
jButtonSalir = new javax.swing.JButton();
jLabelNroDeItems = new javax.swing.JLabel();
jTextFieldNrodeItems = new javax.swing.JTextField();
jScrollPaneTabla = new javax.swing.JScrollPane();
jTableVenta_Detalle = new javax.swing.JTable();
jButtonImprimir = new javax.swing.JButton();
jTextFieldTotal = new javax.swing.JTextField();
jTextFieldIGV = new javax.swing.JTextField();
jTextFieldSubTotal = new javax.swing.JTextField();
jLabelSubTotal = new javax.swing.JLabel();
jLabelIGV = new javax.swing.JLabel();
jLabelTotal = new javax.swing.JLabel();

jComboBoxProducto.addItemListener(new java.awt.event.ItemListener()
{ public void itemStateChanged(java.awt.event.ItemEvent evt) {
jComboBoxProductoItemStateChanged(evt);
}
});

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

jButtonAgregar.setText("Agregar");
jButtonAgregar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonAgregarActionPerformed(evt);
}
});
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 21
getContentPane().add(jButtonAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 310, 90, -1));

jButtonEliminar.setText("Eliminar");
jButtonEliminar.addActionListener(new java.awt.event.ActionListener()
{ public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonEliminarActionPerformed(evt);
}
});
getContentPane().add(jButtonEliminar, new org.netbeans.lib.awtextra.AbsoluteConstraints(321, 310, 90, -1));

jButtonSalir.setText("Salir");
jButtonSalir.addActionListener(new java.awt.event.ActionListener()
{ public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonSalirActionPerformed(evt);
}
});
getContentPane().add(jButtonSalir, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 310, 90, -1));

jLabelNroDeItems.setText("NroDeItems:");
getContentPane().add(jLabelNroDeItems, new org.netbeans.lib.awtextra.AbsoluteConstraints(430, 450, 70, -1));
getContentPane().add(jTextFieldNrodeItems, new org.netbeans.lib.awtextra.AbsoluteConstraints(520, 450, 50, -1));

jScrollPaneTabla.setViewportView(jTableVenta_Detalle);

getContentPane().add(jScrollPaneTabla, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 110, 510, 180));

jButtonImprimir.setText("Imprimir");
jButtonImprimir.addActionListener(new java.awt.event.ActionListener()
{ public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonImprimirActionPerformed(evt);
}
});

getContentPane().add(jButtonImprimir, new org.netbeans.lib.awtextra.AbsoluteConstraints(183, 310, 90, -1));

jTextFieldTotal.setEditable(false);
getContentPane().add(jTextFieldTotal, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 410, 80, -1));

jTextFieldIGV.setEditable(false);
jTextFieldIGV.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
getContentPane().add(jTextFieldIGV, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 380, 80, -1));

jTextFieldSubTotal.setEditable(false);
jTextFieldSubTotal.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
getContentPane().add(jTextFieldSubTotal, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 350, 80, -1));

jLabelSubTotal.setText("SubTotal :");
getContentPane().add(jLabelSubTotal, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 360, 60, -1));
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 22

jLabelIGV.setText("IGV:");
getContentPane().add(jLabelIGV, new org.netbeans.lib.awtextra.AbsoluteConstraints(400, 380, 40, -1));

jLabelTotal.setText("Total:");
getContentPane().add(jLabelTotal, new org.netbeans.lib.awtextra.AbsoluteConstraints(390, 410, 50, -1));
pack();
}

private void jButtonAgregarActionPerformed(java.awt.event.ActionEvent evt)
{ Vector oVector=new Vector();
oModeloDeTabla.addRow(oVector);
jTextFieldNrodeItems.setText(oModeloDeTabla.getRowCount()+"");
}

private void jButtonEliminarActionPerformed(java.awt.event.ActionEvent evt)
{ if(jTableVenta_Detalle.getSelectedRow()==-1)
{ JOptionPane.showMessageDialog(null,"Seleccione una fila");
}
else
{ oModeloDeTabla.removeRow(jTableVenta_Detalle.getSelectedRow());
}
}
private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt)
{ dispose();
}

private void jButtonImprimirActionPerformed(java.awt.event.ActionEvent evt)
{ System.out.println("Cantidad :"+jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),0));
ClaseProducto oProducto= (ClaseProducto)jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),1);
System.out.println("Producto : "+oProducto.getProducto_id());
System.out.println("Costo : "+oProducto.getCosto());
System.out.println("Precio : "+jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(),2));
}

// Se dispara cuando se seleciona un items
private void jComboBoxProductoItemStateChanged(java.awt.event.ItemEvent evt)
{ if (evt.getStateChange() == java.awt.event.ItemEvent.SELECTED&&jTableVenta_Detalle.getSelectedRow()!=-1)
{ ClaseProducto itemComboBox=(ClaseProducto) jComboBoxProducto.getSelectedItem();
jTableVenta_Detalle.setValueAt(itemComboBox.getPrecio(),jTableVenta_Detalle.getSelectedRow(),2);

CalculoSubTotal_Parcial(jTableVenta_Detalle.getSelectedRow(),
jTableVenta_Detalle.getValueAt(jTableVenta_Detalle.getSelectedRow(), 0).toString(),
Double.toString(itemComboBox.getPrecio()));
CalculoDeMonto();
}
}
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 23
private void CalculoSubTotal_Parcial(int i,String cantidad, String precio)
{ ClaseCalculoDeSubtotal oCalculo = new ClaseCalculoDeSubtotal();
oCalculo.setCantidad(Integer.parseInt(cantidad));
oCalculo.setPrecio(Double.parseDouble(precio));
oCalculo.setSubTotal_Parcial();

jTableVenta_Detalle.setValueAt(oCalculo.getSubTotal_Parcial(),i,3);
}

private void CalculoDeMonto()
{ claseCalculoDeTotal oCalculo = new ClaseCalculoDeTotal();
for(int i=0;i<jTableVenta_Detalle.getRowCount();i++)
{ if(jTableVenta_Detalle.getValueAt(i,3)!=null)
{ oCalculo.setSubTotal(Double.parseDouble(jTableVenta_Detalle.getValueAt(i,3).toString()));
}
}

jTextFieldSubTotal.setText(oCalculo.getSubTotal()+"");
oCalculo.setIgv();
jTextFieldIGV.setText(oCalculo.getIgv()+"");
oCalculo.setTotal();
jTextFieldTotal.setText(oCalculo.getTotal()+"");
}

private javax.swing.JButton jButtonAgregar;
private javax.swing.JButton jButtonEliminar;
private javax.swing.JButton jButtonImprimir;
private javax.swing.JButton jButtonSalir;
private javax.swing.JComboBox jComboBoxProducto;
private javax.swing.JLabel jLabelIGV;
private javax.swing.JLabel jLabelNroDeItems;
private javax.swing.JLabel jLabelSubTotal;
private javax.swing.JLabel jLabelTotal;
private javax.swing.JScrollPane jScrollPaneTabla;
private javax.swing.JTable jTableVenta_Detalle;
private javax.swing.JTextField jTextFieldIGV;
private javax.swing.JTextField jTextFieldNrodeItems;
private javax.swing.JTextField jTextFieldSubTotal;
private javax.swing.JTextField jTextFieldTotal;
}

package PaqueteModeloDeTabla;
public class ClasePrincipal
{ public static void main(String[] args)
{ JFrameVenta_Detalle frame=new JFrameVenta_Detalle();
frame.setVisible(true);
}
}
jTable con base de datos U.N.J.F.S.C. F.I.
Ing. Carlos Palacios Garcia Pgina 24

Aplicacin en ejecucin: