JTABLE - Como saber quando acabou a edição de uma célula?
6 respostas
mauber
Boa tarde,
Possuo um interface com um JTable, em uma das colunas permito que o usuário altere o valor, porém neste momento preciso gravar no banco de dados a alteração, logo minha dúvida é:
Como saber que a edição da célula foi finalizada, para que neste momento eu possa gravar a alteração no banco de dados?
Pode fazer para gravar quando a cell perder o foco
hvidal
Quando o usuário terminar de editar a célula, a JTable chamará o método setValueAt() do TableModel.
Portanto, crie um table model (por exemplo, herdando de AbstractTableModel) e coloque seu código no método setValueAt().
Grande abraço,
Hugo.
mauber
Ok, mas ainda não cheguei lá, pois agora a alteração que eu faço na célula não fica na célula, pois como sobrepus o método agora ele espera que eu coloque o valor lá, é isso??
Como fazer neste caso??
Obrigado!
privateDefaultTableModelmodel=newDefaultTableModel(){publicvoidsetValueAt(ObjectaValue,introwIndex,intcolumnIndex){System.out.println("Alterei a linha "+rowIndex+" na coluna "+columnIndex+" o seguinte: ("+value+")");//Aqui vai o código para salvar na BD}};
ThomasCouto
Fica interessante também ao pressionar ‘esc’ perder o foco também… não sei se no swing/awt já vem isso pronto, no swt precisei fazer…
Eu sei que ja faz um certo tempo que ninguem posta neste tópico, mas gostaria de fazer umas perguntas.
Primeiramente quero dizer que se não fosse vc (daniel_s) ter postado essas 3 linhas de código eu ainda estaria tentando reescrever o método setValueAt e fazer com que ele mostrasse o valor na célula, além de executar os demais métodos que eu acrescentei nele. pois não achei em lugar nenhum, uma boa explicação sobre isso, fora aqui neste tópico.
Eu tenho duvidas referentes a essas 3 linhas de código que vc postou daniel_s…
O que é e de onde veio o objeto dataVector da primeira linha?
Por que é criado o vetor rowVector e onde mais ele é utilizado além dessas duas primeiras linha de código?
O que o método fireTableCellUpdated(rowIndex, columnIndex); faz?
Ja fiz td funcionar aqui… porém não consegui entender muito bem o que essas 3 linhas fazem, se alguem puder explicar, seria melhor…