JTable muito grande - Dá pra paginar?

Quando a JTable é muito grande, o consumo de memoria aumenta bruscamente. Existe alguma forma de mostrar o conteudo de uma JTable por partes. Fazendo uma especie de paginação, mostrando apenas o que o usuario deseja vê no momento. Dessa forma, diminuria bastante o consumo de memoria.

alguem ja passou por isso ??

valeu !!!

Vc pode implementar um TableModel que busca os resultados por partes, dessa forma vc busca os resultados quando estes forem requistados pelo método getValueAt… É interessante pensar em algo como um cache ou algo parecido para que o usuário não perceba essa busca.

Uma JTable só pede o valor quando ela precisar desenhá-lo, dessa forma um scrollpane e este TableModel resolveria o problema…

Espero ao menos ter lhe dado uma idéia…

Falou

[quote=TedLoprao]Vc pode implementar um TableModel que busca os resultados por partes, dessa forma vc busca os resultados quando estes forem requistados pelo método getValueAt… É interessante pensar em algo como um cache ou algo parecido para que o usuário não perceba essa busca.
Uma JTable só pede o valor quando ela precisar desenhá-lo, dessa forma um scrollpane e este TableModel resolveria o problema…
Espero ao menos ter lhe dado uma idéia…
Falou[/quote]

Vc ja fez algo desse tipo ?? E teve um ganho de performace ?? Tu teira algum exemplo de implementação dessa TableModel ??

valeu !!

Sim, eu comecei uma implementação baseada nessa idéia na empresa onde trabalhava, entretanto houve algumas mudanças de projeto e não foi utilizado.
No nosso caso houve um ganho considerável para conjuntos de dados realmente grandes, entretanto esse ganho foi mais na questão de velocidade de busca e transporte de rede do que por quantidade de memória ocupada.
Infelizmente eu não possuo o código, mas a idéia era tu criar um TableModel que trabalhava com, por exemplo, 200 linhas. Supondo que o conjunto de linhas total fosse 1000, então quando fosse requisitado a linha 201, buscava-se um novo conjunto de 200 e assim por diante. Essas linha eram adicionadas a um cache local. Nossa implementação parou por aí, mas poderiam ser feitas diversas melhorias.

Humm entendi :smiley:

Nesse cache ficaria todas as linha que já foram pegas do banco. Assim sendo, caso o usuario desejasse visualizar um conjunto de linhas que ja foi recuperada do banco nao precisaria mais ir buscar no banco, pois ja existe no cache local.
Agora, o que seria esse cache local ??? um arquivo ???
No caso de arquivo seria ruim, pois daria insegurança !!!

valeu !!

tenta serializar os objetos necessários em arquivo.

Bom, essa decisão depende da sua necessidade, no nosso caso, como o problema não era a memória, e sim o tempo de carga da JTable, os dados ficavam em um ArrayList, simples assim…