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();
}
}
});