Problema renderização JTable

Olá pessoal,

Tenho um JTable que preciso atualizar a cada 10 segundos.
Quando está sendo renderizada a tabela dá uma piscada. :frowning:
Alguém sabe como posso evitar isso, ou seja, atualizar os dados sem essa oscilação na tabela?

Obrigada.

acho que nao tem como, ja que a tabela vai mudar a aparencia e ela precisa ser inteiramente redesenhada.

esse intervalo me parece muito curto, nao pode aumentar nao?

em alguns aplicativos que utilizo jTable, sempre existe essa piscada quando vou atualizala.
por que voce tira os dados que estavam nela e os insere novamento usando Query ou algo do tipo.
por isso ela pisca, sao os dados sendo inseridos nela.

Realmente não tem jeito, eu tenho uma tela q possui 6 JPanel em grid com as JTables…Todos dao essa piscadinha q esta se referindo. Isso acontece pq a tabela é redesenhada, veja q até o scroll vai para o inicio.

t+ e boa sorte.

Como vc está atualizando esses dados?

Para evitar a piscada, você deveria atualizar somente as linhas que mudaram, e disparar o evento específico somente para essas linhas.

Se disparar um fireTableDataChanged ou o fireTableStructureChanged (o que ocorre se vc mudar o model) pisca mesmo.

[quote=ViniGodoy]Como vc está atualizando esses dados?

Para evitar a piscada, você deveria atualizar somente as linhas que mudaram, e disparar o evento específico somente para essas linhas.

Se disparar um fireTableDataChanged ou o fireTableStructureChanged (o que ocorre se vc mudar o model) pisca mesmo.[/quote]

Até eu me interessei por esse assunto, como fazer isso ? Eu uso fireTableDataChanged() e aparece essa piscada.

Na minha Thread faco assim.

public void executaTabelaClientes(){
List<Clientes> listaCliente = new ClientesDAO().getClientes();
MeuTableModel model = new MeuTableModel(listaCliente);
JTable tabela = new JTable();
tabela.setModel(model);
}


public void startTablesPrincipal(){
      new Thread(){
            public void run(){
                while(true){
                    executaTabelaClientes();
                    sleep(1000 * 30);
                }
            }
        }.start();
}

Como fazer pra parar de dar a piscadinha ??

obrigado

Dá trabalho. Você efetivamente tem que atualizar o que mudou no model, e usar apenas eventos do tipo fireTableRowUpdated ou fireTableCellUpdated.

Olá pessoal,

Consegui evitar as piscadinhas usando o setValue

model.setValueAt(newValue, linha, column).

Dá trabalho, mas por hora foi a solução que achei.

Vou tentar algo melhor, se eu conseguir eu posto a solução.

Obrigada pela ajuda de todos!

Abraços.