Jtable + AbstractTableModeL "Repetição de Valores"
11 respostas
R
rfogo
Tenho Jtable que é preenchido por uma Lista. O problema está quando o Jtable está sendo preenchido, ele está pegando os valores do ultimo registro e preechendo as linhas a quantidade de registros que o select retornou!
Obs: Deu um print em uma coluna dentro do while e está retornando os valores corretamente.
Aparentemente seu código está certo. Já tentou usar um depurador dentro do TableModel?
R
rfogo
Executei e aparentemente passa normalmente como minhas outras Jtables!
Segue a Tela com a repetição e o select!
Eu já tive problemas iguais a esse e era devido ao argumento static que tinha na query dessa forma que estpou testando nem argumento precisa para executar a query!
ViniGodoy
O ideal é parar o debug no getValueAt() e olhar o conteúdo da lista. Veja se lá dentro os objetos estão mesmo com todos os campos repetidos. Ou se a lista dentro do model está mesmo certa.
R
rfogo
ViniGodoy,
Como você falou os falores no getValuesAt() estão mesmo iguais nos cincos objetos retornados!
Segue o resultado do debug no getValueAt():
ViniGodoy
Então o problema não está no TableModel. Mas na carga da lista.
Ou em algum momento entre a carga da lista e a adição no tablemodel.
ViniGodoy
Pode postar sua classe Historico?
R
rfogo
Segue o modelo do Historico
ViniGodoy
Está aí o problema. Retire as palavras static de todo código.
O static significa que o atributo e o método é da classe, não da instância. Portanto, de nada adianta dar “new”. Serão objetos diferentes apontando para o mesmo atributo, o da classe.
Usar static é muito raro. E deve ser feito com cuidado.
ViniGodoy
Abaixo o código corrigido:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagesgd.modelo;publicclassHistorico{privateStringcd_documento;privateStringcd_movimentacao;privateStringds_documento;privateStringnm_resp_atual;privateStringnm_resp_dest;privateStringds_depto_atual;privateStringds_depto_dest;privateStringmovimetacao;privateStringdt_movimentacao;privateStringst_documento;/** * @return the ds_documento */publicStringgetDs_documento(){returnds_documento;}/** * @param aDs_documento the ds_documento to set */publicvoidsetDs_documento(StringaDs_documento){ds_documento=aDs_documento;}/** * @return the nm_resp_atual */publicStringgetNm_resp_atual(){returnnm_resp_atual;}/** * @param aNm_resp_atual the nm_resp_atual to set */publicvoidsetNm_resp_atual(StringaNm_resp_atual){nm_resp_atual=aNm_resp_atual;}/** * @return the nm_resp_dest */publicStringgetNm_resp_dest(){returnnm_resp_dest;}/** * @param aNm_resp_dest the nm_resp_dest to set */publicvoidsetNm_resp_dest(StringaNm_resp_dest){nm_resp_dest=aNm_resp_dest;}/** * @return the ds_depto_atual */publicStringgetDs_depto_atual(){returnds_depto_atual;}/** * @param aDs_depto_atual the ds_depto_atual to set */publicvoidsetDs_depto_atual(StringaDs_depto_atual){ds_depto_atual=aDs_depto_atual;}/** * @return the ds_depto_dest */publicStringgetDs_depto_dest(){returnds_depto_dest;}/** * @param aDs_depto_dest the ds_depto_dest to set */publicvoidsetDs_depto_dest(StringaDs_depto_dest){ds_depto_dest=aDs_depto_dest;}/** * @return the movimetacao */publicStringgetMovimetacao(){returnmovimetacao;}/** * @param aMovimetacao the movimetacao to set */publicvoidsetMovimetacao(StringaMovimetacao){movimetacao=aMovimetacao;}/** * @return the dt_movimentacao */publicStringgetDt_movimentacao(){returndt_movimentacao;}/** * @param aDt_movimentacao the dt_movimentacao to set */publicvoidsetDt_movimentacao(StringaDt_movimentacao){dt_movimentacao=aDt_movimentacao;}/** * @return the st_documento */publicStringgetSt_documento(){returnst_documento;}/** * @param aSt_documento the st_documento to set */publicvoidsetSt_documento(StringaSt_documento){st_documento=aSt_documento;}/** * @return the cd_documento */publicStringgetCd_documento(){returncd_documento;}/** * @param aCd_documento the cd_documento to set */publicvoidsetCd_documento(StringaCd_documento){cd_documento=aCd_documento;}/** * @return the cd_movimentacao */publicStringgetCd_movimentacao(){returncd_movimentacao;}/** * @param aCd_movimentacao the cd_movimentacao to set */publicvoidsetCd_movimentacao(StringaCd_movimentacao){cd_movimentacao=aCd_movimentacao;}}
Outra coisa. Por que tantos atributos são Strings? Use String somente para representar texto. Os demais tipos de dados tem classes ou tipos apropriados, como int, Calendar, double, boolean…
R
rfogo
Era isso mesmo, só deixei o cd-documento como static pq era arqgumento do array!
Funcionou!
Vlw!
ViniGodoy
Volto a ressaltar. Use String somente para guardar TEXTO, apenas TEXTO e nada mais do que TEXTO. Os demais campos, leia com seus dados corretos.
E não use static a torto e a direita. O uso do static é bastante raro e geralmente causa de problemas.