package docen_swing; import javax.swing.table.AbstractTableModel; import java.util.Vector; /************************************************************************************* Modelo de datos para un JTable. Permite añadir y eliminar filas. **************************************************************************************/ class modelo_grid extends AbstractTableModel { Vector filas = new Vector(); // Vector de filas (vector de vectores) Vector columnas = new Vector(); // Vector de columnas /*** Constructor: carga datos ***/ modelo_grid() { cargar_datos(); } /********************************************** * Carga de datos ************************************************/ void cargar_datos() { /**** Creo el vector que define las columnas ***/ columnas.add( (String) "Persona"); columnas.add( (String) "Actividad"); columnas.add( (String) "Objeto"); /**** Creo un vector de vectores (vector de filas) ***/ Vector fila0 = new Vector(); fila0.add( (String) "María"); fila0.add( (String) "Salta"); fila0.add( (String) "El charco"); filas.add( fila0 ); // Añado fila (vector) al vector de vectores Vector fila1 = new Vector(); fila1.add( (String) "Pedro"); fila1.add( (String) "Juega"); fila1.add( (String) "Baloncesto"); filas.add( fila1 ); // Añado fila (vector) al vector de vectores Vector fila2 = new Vector(); fila2.add( (String) "Ana"); fila2.add( (String) "Lee"); fila2.add( (String) "Una revista"); filas.add( fila2 ); // Añado fila (vector) al vector de vectores } /*************** getColumnName() *********************/ public String getColumnName( int c ) { return (String) columnas.elementAt( c ); } /*************** getColumnCount() ******************/ public int getColumnCount() { return columnas.size(); } /****************** getRowCount() *******************/ public int getRowCount() { return filas.size(); } /******************* setValueAt() *********************/ /*** Llamada automáticamente cuando termina la edición de una celda ***/ public void setValueAt( Object valor, int fila, int col ) { Vector v = (Vector) filas.elementAt(fila); v.set( col, valor); } /******************* getValueAt() *********************/ public Object getValueAt( int fila, int col ) { Vector v = (Vector) filas.elementAt(fila); return v.elementAt( col ); } /*** Para que todas las celdas sean editables ****/ public boolean isCellEditable( int fila, int col ) { return true; } /********************************************************************** * Añade nueva fila al modelo y en la columna (col) pone el texto. * Ordena a la tabla (vista) que se actualice ***********************************************************************/ public void añadir( String texto, int col ) { Vector fila_nueva = new Vector(); // Nueva fila /*** Recorro todas las cols de la nueva fila, sólo pongo el texto en columna col */ for ( int i = 0; i < this.getColumnCount(); i ++) { if (i != col) fila_nueva.add(""); else fila_nueva.add(texto); } filas.add( fila_nueva ); // Añado fila al modelo this.fireTableRowsInserted( filas.size(),filas.size() ); // Ordeno a la tabla que se actualice } /************************************************************************ * Elimina la fila y ordena a la tabla (vista) que se actualice ************************************************************************/ public void eliminar( int fila ) { filas.remove( fila ); this.fireTableRowsDeleted( fila, fila ); } } /////////////////////////// Fin de clase modelo_grid \\\\\\\\\\\\\\\\\\\\\\\\ºº