Impedir edição de células - JTable

7 respostas
Arikado

Como impedir que o usuário modifique os valores de “uma” determinada coluna do JTable?

7 Respostas

E

procure sobrepor o método isCelleditable(int row, int column) da sua tablemodel…

dá uma pesquisada nisso que tenho certeza que resolve teu problema…

flws

Marky.Vasconcelos

se voce tiver uma classe como model sobre-escreva o metodo isCellEditable(int row,int col). algo assim

public boolean isCellEditable(int row, int col){ if(col == 2)return false;//Isso se for sua terceira coluna return true; }

L
DefaultTableModel dtm = new DefaultTableModel()

{

public boolean isCellEditable(int row, int column)

{

return false;

}

};

JTable.setModel(dtm);

Fazendo isso você impossibilita a edição das células e consegue selecionar as rows.

Marky.Vasconcelos

Por favor, não ressucite um tópico de 3 anos só pra dar a solução com o DefaultTableModel.

Essa nunca é a solução correta e estamos lutando arduamente a anos para não usarem isso.

erivandoramos

Oi Luquinhas,

coloco este codigo em algum evento da jTable ou no metodo construtor do form?

DefaultTableModel dtm = new DefaultTableModel()
{
public boolean isCellEditable(int row, int column)
{
return false;
}
};

JTable.setModel(dtm);

Erivando

Marky.Vasconcelos

@erivandoramos

É na criação do model.

Mas volto a repetir o que falei ano passado sobre DefaultTableModel.

erivandoramos

Vlw Marky, entendi agora, eu fiz no meu tablemodel personalizado e deu certo!

Classe MyTableModel

public class MyTableModel extends DefaultTableModel {

...
// Outros códigos importantes aqui!
...


/*
 * Trava a edicao das celulas da jTable
 */
@Override
public boolean isCellEditable(int rowIndex, int mColIndex) {
    return false;
}
}

Espero que ajude também a outras pessoas com a mesma dúvida

Erivando Ramos

Criado 13 de julho de 2007
Ultima resposta 24 de jan. de 2012
Respostas 7
Participantes 5