Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/03/2013, 13:52
Avatar de fahs82
fahs82
 
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años, 7 meses
Puntos: 12
problema con funcion double a string

buen dia , tengo un problema tengo una tabla que populo de la siguiente manera

Código:
//declaro el modelo
DefaultTableModel ModeloVenta;
//declaro mi arreglo que seran los registros que se iran agregando a mi modelo de tabla
String [] RegistroDetalle = new String [9];

//al iniciar la clase arranco la declaracion del modelo y lo asigno a un jtable

String [] TitulosDetalle = {"ID","ARTICULO","DESCRIPCION","VARIEDAD","TALLA","BARCODE","PRECIO","CANTIDAD","TOTAL"};
        
        ModeloDetalleVenta = new DefaultTableModel(null,TitulosDetalle);
        tblDetalleVenta.setModel(ModeloDetalleVenta);
aqui todo bien , despues hago una consulta sql a mi base y en base a los resultados comienzo a popular el modelo de la tabla de la siguiente manera

Código:
public void BuscarCodigo()throws SQLException{
ConexionMySQL ConexionMysql = new ConexionMySQL();
Connection cn = ConexionMysql.Conectar();
try{
Statement stCodigo = cn.createStatement();
ResultSet rsCodigo = stCodigo.executeQuery("select t1.id_art,t1.articulo,t1.descripcion,t2.variedad,t3.talla,t3.barcode,t4.precio_local from articulos as t1 left outer join variedades as t2 on t1.id_var = t2.id left outer join bc_articulos as t3 on t1.id_art = t3.id_art left outer join listaprecios_local as t4 on t1.id_art = t4.id_art where t3.barcode = '" + Barcode + "'");
if(!rsCodigo.next() && rsCodigo.getRow()==0){
JOptionPane.showMessageDialog(null,"Articulo no registrado");
txtCodigo.setText("");
txtCodigo.requestFocus();
}else{
rsCodigo.beforeFirst();
while(rsCodigo.next()){
RegistroDetalle [0] = rsCodigo.getString("ID_ART");
RegistroDetalle [1] = rsCodigo.getString("ARTICULO");
RegistroDetalle [2] = rsCodigo.getString("DESCRIPCION");
RegistroDetalle [3] = rsCodigo.getString("VARIEDAD");
RegistroDetalle [4] = rsCodigo.getString("TALLA");
RegistroDetalle [5] = rsCodigo.getString("BARCODE");
if(rsCodigo.getString("PRECIO_LOCAL")== null){
RegistroDetalle [6] = "0";
RegistroDetalle [8] = "0";
}else{
RegistroDetalle [6] = rsCodigo.getString("PRECIO_LOCAL");
RegistroDetalle [8] = rsCodigo.getString("PRECIO_LOCAL");
}
RegistroDetalle [7] = "1";

}
ModeloDetalleVenta.addRow(RegistroDetalle);
TotalesVenta();
txtCodigo.setText("");
txtCodigo.requestFocus();
}    
    
    
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}

}
despues de agregar el registro debo correr una rutina para totalizar los contenidos de la tabla con el siguiente metodo

Código:
public void TotalesVenta(){
 int Filas;
 TotalArticulos = 0;
 ImporteTotal = 0;
 Subtotal = 0;
 Iva = 0;
 Filas = tblDetalleVenta.getRowCount();
for(int iVentas = 0;iVentas < Filas ;iVentas++){
TotalArticulos = TotalArticulos + Integer.parseInt((String)ModeloDetalleVenta.getValueAt(iVentas,7));
ImporteTotal = ImporteTotal + Double.parseDouble((String)ModeloDetalleVenta.getValueAt(iVentas,8));
}
Subtotal = ImporteTotal / (1 + TasaIva);
Iva = ImporteTotal - Subtotal;
lblSubtotal.setText(df.format(Subtotal));
lblIva.setText(df.format(Iva));
lblImporteTotal.setText(df.format(ImporteTotal));
lblTotalArticulos.setText(String.valueOf(TotalArticulos));
}

todo funciona bien hasta que hago una funcion para modificar el precio , despues de ejecutarlo , no me totaliza como lo estaba haciendo y me tira un error

Código:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
	at jsantiago_pv.VentasMostrador.TotalesVenta(VentasMostrador.java:432)
	at jsantiago_pv.VentasMostrador.txtNuevoPrecioActionPerformed(VentasMostrador.java:1527)
	at jsantiago_pv.VentasMostrador.access$400(VentasMostrador.java:35)
	at jsantiago_pv.VentasMostrador$5.actionPerformed(VentasMostrador.java:907)
	at javax.swing.JTextField.fireActionPerformed(JTextField.java:508)
	at javax.swing.JTextField.postActionEvent(JTextField.java:721)
	at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:836)
	at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1661)
	at javax.swing.JComponent.processKeyBinding(JComponent.java:2879)
	at javax.swing.JComponent.processKeyBindings(JComponent.java:2926)
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2842)
	at java.awt.Component.processEvent(Component.java:6281)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4860)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1908)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:752)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1017)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:889)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:717)
	at java.awt.Component.dispatchEventImpl(Component.java:4730)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

el codigo de la rutina para cambiar el valor del precio y total de mi tabla es la siguiente

Código:
private void txtNuevoPrecioActionPerformed(java.awt.event.ActionEvent evt) {                                               
int Art = tblDetalleVenta.getSelectedRow();
int Cant;
Double Total;
ModeloDetalleVenta = (DefaultTableModel)tblDetalleVenta.getModel();
ModeloDetalleVenta.setValueAt(Double.parseDouble(txtNuevoPrecio.getText()), Art,6);
Cant =  Integer.parseInt((String)ModeloDetalleVenta.getValueAt(Art,7));
Total = Double.parseDouble(txtNuevoPrecio.getText()) * Cant;
ModeloDetalleVenta.setValueAt(Total,Art,8);
CambioPrecioForm.dispose();
txtNuevoPrecio.setText("");
TotalesVenta();        
        // TODO add your handling code here:
    }
no se si me pudieran ayudar en como solucionar el error que me tira , que al parecer es cuando recibe normamente la funcion un string y al momento de parsearlo a double me detiene la funcion , como asignar los valores de cantidad y total del modelo sin que me envie el error estare muy agradecido de verdad , de antemano aprecio el tiempo se tomaron para leer mi problema y espero su ayuda