Bloquear edição de linhas em jTable

olá.

eu tenho que bloquear a edição de todas as linhas da tabela.

 DefaultTableModel tmLivro = new DefaultTableModel(null, new String[]{"TITULO","ISBN","QTD","PRECO"});
    List<Livro> livro;
    ListSelectionModel lsmLivro;

 boolean[] canEdit = new boolean []{    
            false, false, false, false  
        };    
     
        @Override    
        public boolean isCellEditable(int rowIndex, int columnIndex) {    
            return canEdit [columnIndex];    
        }  


Eu adicionei o canEdit, só que não está funcionando.

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

eu fiz assim:

[code] DefaultTableModel tmLivro = new DefaultTableModel(null, new String[]{“TITULO”,“ISBN”,“QTD”,“PRECO”});
List livro;
ListSelectionModel lsmLivro;

tmLivro.isCellEditable();

  public boolean isCellEditable() {      
       return false;  
   }   [/code]

mas só que o erro persiste

Sobrescreva o metodo isCellEditable()

deixe assim:

public boolean isCellEditable(int row, int column) {																
			return false;
}

Boa sorte.

[quote=Fexx]Sobrescreva o metodo isCellEditable()

deixe assim:

public boolean isCellEditable(int row, int column) {																
			return false;
}

Boa sorte.[/quote]

eu tenho que bloquear todas as linhas. Como é que eu faço para nao ter que passar por paramentro uma por uma, linha e coluna?

apenas faca isso e ira funcionar

public boolean isCellEditable(int row, int column) {                                                                  
            return false;  
} 

[quote=CristianPalmaSola10]apenas faca isso e ira funcionar

public boolean isCellEditable(int row, int column) {                                                                  
            return false;  
} 

[/quote]

fiz isso e nao funcionou.
Segue abaixo o meu codigo

[code]
DefaultTableModel tmLivro = new DefaultTableModel(null, new String[]{“TITULO”,“ISBN”,“QTD”,“PRECO”});
List<Livro> livro;
ListSelectionModel lsmLivro;

  public boolean isCellEditable(int row, int column) {
       return false;
   }[/code]

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.

Boa sorte.

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