Atualizar JTable

Boa tarde pessoal.

Tenho um pequeno problema, em uma JTable, com DefaultTableModel, tenho 4 colunas (Nome, Valor Anterior, Valor Atual e Diferença), nesses registros o usuário pode entrar na coluna valor atual e alterar o valor, eu gostaria que quando ele sair da coluna, ou desse um enter, a coluna Diferença fosse recalculada, como posso fazer isso ?

Obrigado.

Douglas :lol:

caro douglasrauber,

você deve adicionar um “listener” a sua JTable. Existem vários tipos de listeners, veja o que mais se adequa a você,

espero ter ajudado,

qualquer coisa, posta ai,

vlw

Isso, põe um listener(evento),

não me lembro o nome certo, mas, acho que é “focuslost” ou algo parecido. que é quando vc perde o foco de um determinado componente.

[]´s

Olá Amigos.

Justamente esse Listener que não estou conseguindo colocar. Quanto ao focusLost, ele só faz da tabela inteira, e não da célula. Acho que á algo envolvido com firecellupdated, mas (ainda) não sei como fazer… se alguem puder dar mais uma força…

Obrigado.

Douglas

Descobri…

O Listener que eu preciso criar é no model e não na JTable, fiz um pequeno teste…

    jTable1.getModel().addTableModelListener(new TableModelListener() {

            public void tableChanged(TableModelEvent e) {
                int row = jTable1.getSelectedRow();
                int col = jTable1.getSelectedColumn();
                System.out.println("linha: " + row + " coluna: " + col);
            }
        });

E Funcionou certinho… agora é só fazer a operação matemática no programa real…

Obrigado a todos.

Olá douglasrauber,

estou tentando fazer algo semelhante que vc e me baseiei no seu ultimo exemplo ai, porem estou com um problema, ele entra no tableChanged(TableModelEvent e) e fica em loop infinito.

Segue o código:

        areaEstoque.getModel().addTableModelListener(new TableModelListener() {
            
            public void tableChanged(TableModelEvent e) {
                int col = areaEstoque.getSelectedColumn();

                
                    if (col == 4) {
                
                    manipulaValorFabrica();
                    
                    
                }  
            }
        });