Implementei uma classe que extende AbstractTableModel, e para monitorar automaticamente alterações nos dados eu criei o método abaixo, usando thread:
private void monitor() {
monitor = new Thread() {
@Override
public void run() {
int oldHashCode = 0;
int oldSize = 0;
do {
if (dataSource != null && (dataSource.hashCode() != oldHashCode || dataSource.size() != oldSize)) {
fireTableDataChanged();
oldHashCode = dataSource.hashCode();
oldSize = dataSource.size();
}
try {
// Sleep para que esta thread não sobrecarregue o processador
sleep(200);
} catch (InterruptedException ex) {
new ExceptionFrame(ex).setVisible(true);
}
} while (true);
}
};
monitor.start();
}
Está funcionando perfeitamente, só que quando eu monto algumas tabelas o processamento começa a ser maior, pois uma thread pra cada tabela é criada. Até agora não tive problemas, mas acredito que eu consiga fazer a mesma coisa usando um listener, já procurei por algo do tipo mas sem sucesso. Se alguém puder ajudar, agradeço muito.
Abraço a todos.