La forma más fácil de hacer esto, es crear una clase que herede de DefaultTableModel, y que sobreescribas el método isCellEditable().
Por ejemplo:
Código:
public class MyDefaultTableModel extends javax.swing.table.DefaultTableModel {
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
}
De esa manera, ninguna celda será editable.
Si quieres algo más genérico, podrías colocarle un atributo a la clase de tipo vector de boolean y que según la columna que te pregunten si es editable, respondas true o flase:
Código:
public class MyDefaultTableModel extends javax.swing.table.DefaultTableModel {
private boolean esEditable[];
public boolean setEsEditable(boolean[] editables) {
this.esEditable = editables;
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return esEditable[columnIndex];
}
}
Para usar esa clase simplemente cuando creas una instancia del MyDefaultTableModel, le asignas qué columnas querés que sean editables: por ejemplo:
Código:
MyDefaultTableModel modelo = new MyDefaultTableModel();
modelo.setEsEditable(new boolean[] {true,true,false});
Con ese ejemplo, harías que las 2 primeras columnas sean editables y la tercera no.