MODELO TABLAS
Clase que se utilice para la creacin de las lneas de la tabla. public class Producto { private int cantidad; private String codigo; private String nombre; private double precio; private double total; public int getCantidad() { return cantidad; } public void setCantidad(int cantidad) { [Link] = cantidad; } public String getCodigo() { return codigo; } public void setCodigo(String codigo) { [Link] = codigo; } public double getPrecio() { return precio; } public String getNombre() { return nombre; } public void setNombre(String nombre) { [Link] = nombre; } public void setPrecio(double precio) { [Link] = precio; } public double getTotal() { return total; } public void setTotal(double total) { [Link] = total; } }
Ahora creamos nuestro propio TableModel, que tendr el metodo setValueAt que nos permitir modificar cualquier columna de un registro X
import [Link]; import [Link];
public class CustomTableModel extends AbstractTableModel { private ArrayList REGISTROS = new ArrayList(); private String COLUMNAS[] = {"CODIGO","PRODUCTO","CANTIDAD","PRECI O","TOTAL"}; public int getColumnCount() { return [Link]; } public int getRowCount() { return [Link](); } public Object getValueAt(int rowIndex, int columnIndex) { Producto producto = (Producto) [Link](rowIndex); switch(columnIndex){ case 0: return [Link](); case 1: return [Link](); case 2: return [Link](); case 3: return [Link](); case 4: return [Link](); default: return null; } } @Override public void setValueAt(Object aValue, int rowIndex, int columnInde x) { Producto producto = (Producto) [Link](rowIndex); switch(columnIndex){ case 0: [Link]([Link]()); case 1: [Link]([Link]()); case 2: // Si la columna es "CANTIDAD", se actualiza el precio total automaticamente.
int nuevaCantidad = [Link]([Link]()) ; [Link](nuevaCantidad); [Link]([Link]()*nuevaCantidad); case 3: [Link]([Link]([Link]())); case 4: [Link](); } // Disparamos el Evento TableDataChanged (La tabla ha cambiado ) fireTableDataChanged(); } public boolean isCellEditable(int rowIndex, int columnIndex) { return true; }
public void setProducto(Producto producto){ [Link](producto); fireTableDataChanged(); }
El metodo isCellEditable le dice al JTable cuales columnas pueden ser Editadas, en este caso devolvemos true para que todas las columnas sean editables, en caso que no quieras que todas sean editables tendrs que devolver true dependiendo del columnIndex que deseas sea editable.
Como introducir un nuevo producto en el JTable desde el JFrame?
Producto pro = new Producto(); [Link](1); [Link]("P001"); [Link]("PRODUCTO PARA VENDER SIN COLOR NI TALLA, NI DESCRIPCION "); [Link]("1.00"); [Link]("1.00"); ((CustomTableModel)([Link]()).setProducto(pro);