Cara se voce tem que bloquear a edicao de todas as linha entaum faça o metodo isCellEditable retornar sempre falso pq voce tem que bloquear a edicao de todas as linha, nao ha a necessidade de se usar um array que guarda dentro dele em todas as poiscoes falso, faça sempre retornar falso que ira funcionar
CAra voce não deve usar DefaultTableModel é por isso que não funciona, voce deve criar uma classe que implemente a AbstractTableModel nesta classe voce deve colocar aquele trecho de codigo e tambem implemtar os metodos necessarios para o funcionamento da sua tablemodel personalizada segue um exemplo de TableModel para voce se baseiar
**
*
* @author cristian.urbainski
*/
public class ModelTable extends AbstractTableModel {
public ArrayList lista;
public String[] colunas = {"Titulo", "Código"};
public ModelTable(ArrayList l)
{
this.lista = l;
}
@Override
public boolean isCellEditable(int row, int column)
{
return true;
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Bean b = (Bean) lista.get(rowIndex);
switch(columnIndex)
{
case 0:
b.desc = (String) aValue;
break;
case 1:
b.cd = Integer.parseInt((String)aValue);
break;
}
fireTableRowsUpdated(rowIndex, rowIndex);
}
@Override
public String getColumnName(int columnIndex)
{
switch(columnIndex)
{
case 0:
return "Titulo";
case 1:
return "Cód.";
default:
return"";
}
}
public int getRowCount()
{
return lista.size();
}
public int getColumnCount()
{
return colunas.length;
}
public Object getValueAt(int rowIndex, int columnIndex)
{
Bean obj = (Bean) lista.get(rowIndex);
switch(columnIndex)
{
case 0:
return obj.desc;
case 1:
return obj.cd;
default:
return null;
}
}
public void addLinha(Bean b)
{
lista.add(b);
fireTableRowsInserted(lista.size(), lista.size());
}
Lembrando que tanto um DefaultTableModel, como um AbstractTableModel, possui um metodo isCellEditable(), ou seja não é porque vc está usando DefaultTableModel que não vai funcionar o metodo.
Já utilizei defaultTableModel, quando bloqueei as linhas utilizava assim:
jtTabela.setModel(new DefaultTableModel(new Object[][] {}, new String[] { "Placa", "Cor", "Descrição", }) {
public boolean isCellEditable(int row, int column) {
return false;
}
Outra coisa, tente criar seu próprio model, com DefaultTableModel, só vai ter problemas.
Fexx compare o jeito que voce e o jeito que ele fez, do jeito que ele fez nunca ira funcionar ele colocou o metodo isCellEditable fora da declaracao da defaulTableModel, esta crianda na classe errada