jTable y su "Modelo"

   Continuando con las tablas en Java, vamos a ver como crear las tablas y manejarlas, en la entrada de "Tablas Swing" explico un poco del tema, pero en esta entrada explicare mas del tema y date más tips. Para evitarnos problemas utilizaremos un "Modelo" para nuestra tabla, ¿como funciona esto?, la verdad que explicarlo es medio enredado, así que mejor una imagen:

   Básicamente es crear la tabla, cargarle el modelo y agregar la data, esto se hace con la finalidad de editar el modelo que es mas fexible para utilizar solo la tabla como una especie de panel el cual contendra los datos, en realidad lo que editamos es el modelo, en otras palabras es como hacer galletas, el molde es nuestro modelo, la data es la masa y la galleta es la tabla.
   Quedando claros en esto (pienso yo) vamos con algunos truquillos importantes e imprecindibles. Para crear el modelo y agregarselo a la tabla.
DefaultTableModel modelo = new DefaultTableModel();
JTable tabla = new JTable(modelo);
   Agregar columnas

modelo.addColumn("columna");
   Agregar datos.
Object [] filas = new Object[2];
filas[0] = "dato columna 1";
filas[1] = "dato columna 2";
modelo.addRow ( filas );
   Borrar datos.
modelo.removeRow(FILA);
   Modificar.
modelo.setValueAt ("nuevo dato", fila, columna);
   Obtener el valor donde se hace click.
public void mouseClicked(MouseEvent e) {
int fila = tabla.rowAtPoint(evt.getPoint());
int columna = tabla.columnAtPoint(evt.getPoint());
if ((fila > -1) && (columna > -1))
System.out.println(modelo.getValueAt(fila,columna));
}
   Hacer que la celda no se edite.
public boolean isCellEditable (int row, int column){
if (column == 3)
return true;
return false;
}
   Deshabilitar el movimiento de columnas.
JTable tabla = new JTable();
tabla.getTableHeader().setReorderingAllowed(false);
   Cambiar el tipo de dato.
public Class getColumnClass(int columna) {
if (columna == 0) return Boolean.class;
if (columna == 1) return Integer.class;
return Object.class;
}
   Agregarle un Scroll.
JTable tabla = new JTable();
JScrollPane scroll = new JScrollPane(tabla);
JTable tabla = new JTable();
JScrollPane scroll = new JScrollPane();
scroll.setViewportView(tabla);