Alguem conhece algum envento no Jtable que retorne o momento em que o usuario terminou de editar uma celula da Jtable?
Ex.
O usuario entra em uma celula e Altera o seu conteudo. Quando ele precionar ENTER. A celula vai perder o foco.
Eu gostaria de executar uma funcao no momento em que essa determinada celula perdese o foco.
Andei dando uma procurada por LostFocus da celula do Jtable mas nao estou obtendo mto sucesso.
Se alguem puder me ajudar! Dica, Codigo, Tudo Vale!.
…
No vb2005 existe um evento do Grid Chamado EndEdit. Que é bem oque eu procuro.
Mas nao sou mais da Microsoft. Preciso disso para JAVA.
Desde JA agradeco
Olá,
Tenta o PropertyChangeListener .
Pode ser que te ajude.
Abraços
Infelismente nao posso usar esse evento porque ele é acionado sempre que alguma propriedade da Tabela é modificada!
Por Ex. Se eu modificar o tamanho do tabela ele aciona este evento!.
Tente:
[code]TableModelListener lis = new TableModelListener(){
public void tableChanged(TableModelEvent tmevt){
if(TableModelEvent.UPDATE.equals(tmevt.getType)){
System.out.println("Dados modificados…");
}
}
};
tabela.getModel().addTableModelListener(lis);[/code]
Muito Obrigado!
Encontrei uma resposta para minhas questoes!
Criei uma classe interna que faz isso.
Essa é a classe.
[code]//Essa Classe interna serve para Dizer quando a celula foi alterada e o seu respectivo valor
public class EditarCelulaTabela extends AbstractCellEditor implements TableCellEditor {
// Este é o componente que vai segurar o valor da edicao da celula
JComponent component = new JTextField();
//Este metodo é chamado quando a celula é editada pelo usuario.
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int rowIndex, int vColIndex) {
//'value'é o valor contido na celula que esta na localizacao ((rowIndex, vColIndex)
if (isSelected)
{
// Celula (e talvez outras celulas) sao selecionadas
}
// Configura o componente com o valor Especificado
((JTextField)component).setText((String)value);
// Retorna a configuracao do componente
return component;
}
// Esse metodo é chamado quando é Terminado de Editar a Celula
// Ela retorna o novo valor da Celula.
public Object getCellEditorValue() {
//Chama a funcao insert update da Tabela1 e passa o valor do da celula
AlteraAssociado(((JTextField)component).getText());
//System.out.println(((JTextField)component).getText());
return ((JTextField)component).getText();
}
} [/code]
Como eu utilizo um modelo para inclementar a minha Jtable eu faço Digo logo apos fazer o Tabela.setModel, Quais colunas entrarao nao minha classe.
Tabela1.setModel(MeuModelo);
TableColumn col = Tabela1.getColumnModel().getColumn(1);
col.setCellEditor(new EditarCelulaTabela());
Fazendo isso Consigo Exatamento oque eu preciso.
Obrigado!