Fala pessoal,
Sei que é um assunto batido nos foruns, porém testei as ideias e os códigos de muitos locais diferentes e nao consegui resolver, por isso recorro a vocês.
Tenho uma APP, que tem um Jtable que por sua vez é preenchido por um ArrayList de Objetos e tal.
Quando o usuário clica no Botão Pesquisar, é startado o processo de popular o grid que funiona perfeitamente, inclusive incluindo linhas no Jtable caso seja necessário.
Porém, esta acontecendo o seguinte:
se o usuário clicar novamente no Botão Pesquisar, o resultado dessa nova pesquisa está sendo colocado junto com o resultado da outra busca.
Exemplo: CLicou em pesquisar: troxe 20 linhas e colocou no Grid, CLicou em pesquisar novamente, trouxe as mesmas 20 linhas e acrescentou abaixo da ultima linha do resultado anterior,totalizando 40 linhas, ao invés de ter limpado o grid e adicionado somente o resultado da nova pesquisa.
Ja testei N maneiras, e não consegui sucesso. Alguém ja passou por isso ?
Vou colocar o código que popula o Grid:
public void populaGrid(){
/*ESTE FOI O MEU ULTIMO TESTE FEITO PARA ZERAR A TABELA - PARA POPULAR A TABELA RETIRANDO AS LINHAS DO RESULTADO ANTERIOR*/
if(((DefaultTableModel)jTable1.getModel()).getRowCount() > 0){
((DefaultTableModel)jTable1.getModel()).removeRow(0);
}
int linhas = nav.size(); //TAMANHO DO ARRAYLIST DE OBJETOS
/*ACRESCENTA LINHAS CASO O ARRAYLIST CONTENHA MAIS OBJETOS QUE O NUMERO DE LINHAS PADRÃO*/
if(jTable1.getModel().getRowCount()< linhas) {
int rowsleft = linhas - jTable1.getModel().getRowCount();
for(int i=1; i<=rowsleft; i++ ){
((DefaultTableModel)jTable1.getModel()).addRow(new Vector());
}
}
/*POPULA GRID COM VALORES DO ARRAYLIST*/
for(int i=1; i<= linhas -1; i++){
jTable1.getModel().setValueAt(nav.get(i).getNome(),i,0);
jTable1.getModel().setValueAt(nav.get(i).getDateeta(),i,1);
}
}
[quote=fsfnit]Fala pessoal,
Sei que é um assunto batido nos foruns, porém testei as ideias e os códigos de muitos locais diferentes e nao consegui resolver, por isso recorro a vocês.
Tenho uma APP, que tem um Jtable que por sua vez é preenchido por um ArrayList de Objetos e tal.
Quando o usuário clica no Botão Pesquisar, é startado o processo de popular o grid que funiona perfeitamente, inclusive incluindo linhas no Jtable caso seja necessário.
Porém, esta acontecendo o seguinte:
se o usuário clicar novamente no Botão Pesquisar, o resultado dessa nova pesquisa está sendo colocado junto com o resultado da outra busca.
Exemplo: CLicou em pesquisar: troxe 20 linhas e colocou no Grid, CLicou em pesquisar novamente, trouxe as mesmas 20 linhas e acrescentou abaixo da ultima linha do resultado anterior,totalizando 40 linhas, ao invés de ter limpado o grid e adicionado somente o resultado da nova pesquisa.
Ja testei N maneiras, e não consegui sucesso. Alguém ja passou por isso ?
Vou colocar o código que popula o Grid:
public void populaGrid(){
/*ESTE FOI O MEU ULTIMO TESTE FEITO PARA ZERAR A TABELA - PARA POPULAR A TABELA RETIRANDO AS LINHAS DO RESULTADO ANTERIOR*/
if(((DefaultTableModel)jTable1.getModel()).getRowCount() > 0){
((DefaultTableModel)jTable1.getModel()).removeRow(0);
}
int linhas = nav.size(); //TAMANHO DO ARRAYLIST DE OBJETOS
/*ACRESCENTA LINHAS CASO O ARRAYLIST CONTENHA MAIS OBJETOS QUE O NUMERO DE LINHAS PADRÃO*/
if(jTable1.getModel().getRowCount()< linhas) {
int rowsleft = linhas - jTable1.getModel().getRowCount();
for(int i=1; i<=rowsleft; i++ ){
((DefaultTableModel)jTable1.getModel()).addRow(new Vector());
}
}
/*POPULA GRID COM VALORES DO ARRAYLIST*/
for(int i=1; i<= linhas -1; i++){
jTable1.getModel().setValueAt(nav.get(i).getNome(),i,0);
jTable1.getModel().setValueAt(nav.get(i).getDateeta(),i,1);
}
}
Obrigado desde já pela ajuda.[/quote]
Resolvi, mais uma vez esqueci que meu ArrayList era Estático, e me ferrei. Bem que sempre alertam para tomar cuidado com os Statics da vida.
Vlw galera, o código funciona que é uma blza !!!
Cara, isso faz mto tempo, hoje olhando parece alucinação esse código. Hahahaha.
Foi um vacilo feio de principiante.
Mas ai depois resolvi. Acho que só queria limpar uma tabela antes de inserir novos dados. A lista era estática pois quando a aplicação subia, eu fazia uma query que sempre retornava uma quantidade finita de resultados e que eram compartilhados por toda a APP, mas depois acabei removendo isso.
Legal é rever nosso código depois de 5 anos e ver o quanto evoluímos.