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 ?
fireTableDataChanged não funciona!
7 Respostas
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…
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
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();
Era isso mesmo que eu queria cara. Funcionou perfeitamente.
Brigaduuuuuuuu!!!
Ahhhh, bom!! O problema não era no sentido model -> tabela, mas no sentido tabela -> model…
agora sim…
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!
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!