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!
P
phillip666
Para nào deixa uma JTable editavel basta dar um setEnable(false);
L
lesfar1 like
Não é tão simples assim meu caro, pois como eu as vezes precisamos deixar a tabela clicavel.
L
lesfar
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;
}
};
C
carlosmcp
A comunidade é para isso: ajudar quem não sabe! Um pouco de humildade lhe cairia muito bem viu!
C
cabrinha
Bom o tópico é velhinho, mas eu também demorei para achar, entaum vou postar aq a solução, para futuras pesquisas…
Pois é isso, no vetor ali que é criado basta colocar o indice das colunas que serão não-editaveis…
M
Marky.Vasconcelos
Já que resucitou o tópico
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;
}
E
enialiger
Fa assim
Jtable tblPesquisa = new Jtable(modelo)
{
publicbooleanisCellEditable()
{
returnfalse;
}
}
modelo como parametro [e o DefaultTableModel…
E
enialiger
ai desculpa…
aqui segue o metodo isCellEditable certinho…
public boolean isCellEditable(int linha,int coluna){
return false;
}
S
Schondermax
Muito Bem…
Parabéns… :?
A
afonsoaaf
enialiger valeu!
eu to procurando isso a um tempo heheh
W
wellington7
Gente do céu…hauha leiam a pergunta inteira antes de responder…rsrs
W
wellington7
E não entendi pq não funcionou qnd vc sobrescreveu o método isCellEditable.
Veja este SCCEE rodando perfeitamente, com células não editáveis:
publicstaticvoidmain(String[]args){JFrameframe=newJFrame("Teste tabela não editável");JTabletable=newJTable(10,10){@OverridepublicbooleanisCellEditable(introw,intcolumn){returnfalse;}};frame.setSize(800,600);frame.setLocationRelativeTo(null);frame.getContentPane().add(table);frame.setVisible(true);}
V
ViniGodoy1 like
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.