fireTableDataChanged não funciona!

7 respostas
D

Alguém sabe porque executo o fireTableDataChanged na minha JTable (tentei usando o model dela como DefaultTableModel e como AbstractTableModel) e não fixa o valor digitado no campo onde não foi teclado Enter ou Tab ?

7 Respostas

dukejeffrie

esse evento deve ser lançado pelo model, quando vc alterou alguma coisa nele.

ou seja, vc está avisando à JTable que ela tem que ler o model de novo.

Se vc precisa de alguma coisa diferente disso, explica melhor…

D

Pois é cara; eu já estou chamando esse método pelo model da JTable, mas mesmo assim ele não está considerando as mudanças feitas na coluna onde eu não teclei Enter ou Tab. Detalhe: estou pegando os valores das colunas com “getValueAt”.
Vou tentar explicar melhor; eu tenho uma JInternalFrame, onde tenho uma JTable onde o usuário pode inserir linhas e entrar com dados nas colunas. E tenho um botão onde ele grava as linhas inseridas na JTable. O problema é, que por exemplo, na última coluna de uma linha ele entra com o telefone; se depois que ele digita o telefone, ele não teclar Enter ou Tab e clica no botão de gravar; na hora que pego o valor dessa célula, ele não pega o telefone digitado; e eu deduzi que a solução para isso seria disparar o fireTableDataChanged. Se tiveres qualquer outra sugestão, agradeço.

De qualquer maneira, obrigado por tentar ajudar

brlima

Dispara para a Jtable finalizar a edição da celula, assim ela pega o valor digitado e guarda no modelo.

JTable tab = new JTable();
tab.getCellEditor().stopCellEditing();
D

Era isso mesmo que eu queria cara. Funcionou perfeitamente.

Brigaduuuuuuuu!!!

dukejeffrie

Ahhhh, bom!! O problema não era no sentido model -> tabela, mas no sentido tabela -> model…

agora sim…

brlima

“dukejeffrie”:
Ahhhh, bom!! O problema não era no sentido model -> tabela, mas no sentido tabela -> model…

agora sim…

Esse assunto ja era um velho conhecido meu… hehehe … horas e horas perdida… Qdo ele dise que ja tinha tentado no model, nao tive duvidas…rssss…

Tanto é que eu criei um editor aqui que, ao perder o foco, automaticamente dispara o stopCellEditing, dao nao teria tantos problemas com ele. Mas ainda fica um buranco, pois clicando em botoes ele disparao botao antes do foco… Ainda assim no botao tenho que forçar o stop da edicao na celula.

Falows!

dukejeffrie

Bom, a JTable tem o isEditing()… sempre dá pra achar um ponto onde “ou vai ou já era” e botar o teste lá.

De qq modo, eu acho que JTables pra entrada de dados são horríveis… meus Editors são quase sempre popups com botão OK e Cancel…

[]s!

Criado 24 de março de 2004
Ultima resposta 25 de mar. de 2004
Respostas 7
Participantes 3