Estou usando uma jTable.
Ela atualiza em uma thread.
O problema é ,
Ela esta populada com 40 linhas e 4 colunas, o resto vazia.
Ela apaga;
Fica esbranquiçada
Preenche os dados;
volta pra 1
===
O problema é que ela fica esbranquiçada por muito tempo.
Como posso evitar isso? Acredito que tenha algo a ver com buffer. Porque meus dados vem de um server na internet.
Porque preciso atualizar a tabela.
Qual seria o jeito correto de fazer ? E qual o jeito mais fácil ? Queria os dois jeitos , por favor
Com qual frequência você está atualizando o JTable?
Está usando o comando EventQueue.invokeLater para disparar a atualização na thread do Swing?
Como a thread está fazendo essa atualização? Linha por linha, ou gerando um novo model e dando um único setModel?
SirDominque
ViniGodoy:
Com qual frequência você está atualizando o JTable?
Está usando o comando EventQueue.invokeLater para disparar a atualização na thread do Swing?
Como a thread está fazendo essa atualização? Linha por linha, ou gerando um novo model e dando um único setModel?
Atualizando a cada 7 Segundos
LInha por linha e sem eventQueue.invokelater.
SetvalueAt numa thread.
ViniGodoy
Crie um método setValues no seu TableModel que substitua todos os dados de uma só vez. Dispare uma vez só o evento fireTableDataChanged().
O setValueAt não deveria ser chamado diretamente pelo programador, somente pelo próprio JTable.
Espero sinceramente que você não esteja usando o DefaultTableModel.
Além disso, lembre-se que o Swing não é thread-safe e use o método EventQueue.invokeLater.
SirDominque
ViniGodoy:
Crie um método setValues no seu TableModel que substitua todos os dados de uma só vez. Dispare uma vez só o evento fireTableDataChanged().
O setValueAt não deveria ser chamado diretamente pelo programador, somente pelo próprio JTable.
Espero sinceramente que você não esteja usando o DefaultTableModel.
Além disso, lembre-se que o Swing não é thread-safe e use o método EventQueue.invokeLater.
Estou usando o Default rsrsr, vou fazer meu próprio model então.
E
entanglement
Uma forma alternativa de você não ver mais esses flickers é usar o GlazedLists, que tem um algoritmo que otimiza o refrescamento da tela em um JTable (embora se a taxa de atualização de dados for excessiva é melhor você simplesmente ter um timer que amostra os dados e só refresca a tela depois de transcorridos, por exemplo, 300 ms.).
Usei o GlazedLists no caso de mostrar um “book” no caso de ordens da Bolsa de Valores (se alguém já viu um “book” de PETR4 vai saber do que eu estou falando), e um “timer” para mostrar estatísticas a respeito de mensagens UDP capturadas por vários canais simultaneamente.