Estou tentando tornar um JTable não editável, mas não estou conseguindo… eu tentei da seguinte forma:
modelo = new DefaultTableModel(){
public boolean isCellEditable(int rowIndex, int mColIndex){
return false;
}
};
jtable = new JTable(modelo);
Após essa criação do jtable eu atribuo a ele um JTable que está vindo da camada de persistência através de RMI assim:
O problema é que o jtable permite a edição das células normalmente…
Alguém sabe outra forma de fazer o jtable não editável (o jtable.setEnabled(false); não serve pois bloqueia a tabela, e preciso que ela seja selecionável, porém não editável)…
Oi Arlen !
Estou tentando sincronizar uma JTable com os dados no Banco e uma JToolBar associada a ela e ainda não consegui. Mas nas minhas pesquisas encontrei algo que espero que te ajude no seu trabalho. procure no www.altavista.com.br o fonte java de nome TableDemo.java ou acesse pelo www.inf.ufsc.br/poo/java/tutorial/uiswing/components/example-swing/TableDemo.java e veja o metodo (da inner class) isCellEditable (true/false). Até mais!
I, não sei o que vc pretende ou para quem, mas já começar a baixaria é sacanagem. Eu entendi que é só sobresquecer o método da classe DefaultTableModel. Mas sim, tem gente que precisa estudar, como eu, que somente estou iniciando em java e a cada dia aprendemos coisas novas, como a que o fiz ao ler esse tópico.
Mas para quem estiver precisando, é só sobrescrever o tal método quando for instanciar o DefaultTableModel e não haverá problema.
dtmListaGeneros = new DefaultTableModel(colunas_listaGeneros, 0) {
public boolean isCellEditable(int rowIndex, int mColIndex){
return false;
}
};
não utilize DefaultTableModel
crie uma classe que extenda AbstractTableModel
e escreva o metodo
public boolean isCellEditable(int row, int col){
return false;//Não queremos nada editavel
//ou então
if(col == 3 || col == 4)return false;//se for a quarta ou quinta coluna^^
else return true;
}
Esse tópico, além de recorrente, é velho, portanto vou tranca-lo.
Para quem não sabe ainda como resolver, o correto é não usar o DefaultTableModel, como o Mark_Ameba já tinha dito. No lugar, crie o seu próprio TableModel, filho de AbstractTableModel.