Respuesta:
Para resolver este problema partimos de una interfaz básica, utilizamos el IDE Netbeans 6.9
Solo sumaremos números enteros. Para saber si se realizo o no algún cambio sobre el JTable debemos hacer uso de un listener, más propiamente de un TableModelListener,
Nuestro ejemplo estará compuesto de una columna de productos STRING y otra de cantidades INT
esta segunda columna es la que sumaremos. Cuando se cambie el valor de cualquier celda de la segunda columna, se hará uso de un método privado para recalcular el total, si por error se introduce un valor NO NUMÉRICO, el valor, cualquiera que fuere sera reemplazado por un cero "0".
El código es:
import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableModel; /** * @web http://www.jc-mouse.net/ * @author Mouse */ public class interfaz extends javax.swing.JFrame { //se inicia la tabla con algunos datos DefaultTableModel model = new DefaultTableModel( new Object[][] { { "Harina", "10" }, { "Huevos", "21" }, { "Chorizo", "53" }, { "Leche", "4" }, { "Pan", "34" }, { "Mantequilla", "12" }, }, new Object[] { "Producto", "Cantidad" }); /** Creates new form interfaz */ public interfaz() { initComponents(); suma();//primera suma del total this.jTable1.setModel( model ); //se añade a la tabla un Listener this.jTable1.getModel().addTableModelListener(new TableModelListener() { //cuando se produzca un cambio se ejecuta el codigo que coloquemos aqui dentro public void tableChanged(TableModelEvent e) { //sabemos que nuestros numeros se encuentra en la segunda columna iniciando de 0 if( e.getColumn()==1 )//cuando se modifique un valor de la columna suma();//se ajusta el resultado } }); } /** Metodo privado para la suma de cantidades */ private void suma() { int total = 0; //recorrer todas las filas de la segunda columna y va sumando las cantidades for( int i=0 ; i<model.getRowCount() ; i++) { int numero =0; try{ //capturamos valor de celda numero = Integer.valueOf( model.getValueAt(i, 1).toString() ); } catch (NumberFormatException nfe){ //si existe un error se coloca 0 a la celda numero = 0; model.setValueAt(0, i, 1); } //se suma al total total += numero; } //muestra en el componente this.jTextField1.setText( String.valueOf(total) ); }
Cuando ejecutemos tendremos como resultado:
Bájate el código AQUI
5 comentarios:
comentario
amigo mouse muchas gracias.. por su colaboracion y el tanto compartir con nosotros de ante mano le deseo las mas feliz navidad ... y agradecerle,,,,por todo y para el otro año que Dios te siga bendiciendo en tus cosas...
amigo mouse muchas gracias por compartir tanto y tener tanta calma con nosotros los que apenas comenzamos en programcion en java se lo agradecemos inmnamente y te deseo una FELIZ NAVIDAD y agradecerte inmensamente por todo y que el otro año que viene Dios te siga bendiciendo.. en tus cosas
estoy haciendo un sistema apenas estoy aprendiendo y la verdad
me has ayudado mas que esos maestros de la uni ...
gracias me gusta mucho tu blog
Amigo, cuando en una celda no exite un numero, la funcion me marca error, sabes como se puede solucionar?
Publicar un comentario