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.
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!
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.
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.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sgd.modelo;
public class Historico {
private String cd_documento;
private String cd_movimentacao;
private String ds_documento;
private String nm_resp_atual;
private String nm_resp_dest;
private String ds_depto_atual;
private String ds_depto_dest;
private String movimetacao;
private String dt_movimentacao;
private String st_documento;
/**
* @return the ds_documento
*/
public String getDs_documento() {
return ds_documento;
}
/**
* @param aDs_documento the ds_documento to set
*/
public void setDs_documento(String aDs_documento) {
ds_documento = aDs_documento;
}
/**
* @return the nm_resp_atual
*/
public String getNm_resp_atual() {
return nm_resp_atual;
}
/**
* @param aNm_resp_atual the nm_resp_atual to set
*/
public void setNm_resp_atual(String aNm_resp_atual) {
nm_resp_atual = aNm_resp_atual;
}
/**
* @return the nm_resp_dest
*/
public String getNm_resp_dest() {
return nm_resp_dest;
}
/**
* @param aNm_resp_dest the nm_resp_dest to set
*/
public void setNm_resp_dest(String aNm_resp_dest) {
nm_resp_dest = aNm_resp_dest;
}
/**
* @return the ds_depto_atual
*/
public String getDs_depto_atual() {
return ds_depto_atual;
}
/**
* @param aDs_depto_atual the ds_depto_atual to set
*/
public void setDs_depto_atual(String aDs_depto_atual) {
ds_depto_atual = aDs_depto_atual;
}
/**
* @return the ds_depto_dest
*/
public String getDs_depto_dest() {
return ds_depto_dest;
}
/**
* @param aDs_depto_dest the ds_depto_dest to set
*/
public void setDs_depto_dest(String aDs_depto_dest) {
ds_depto_dest = aDs_depto_dest;
}
/**
* @return the movimetacao
*/
public String getMovimetacao() {
return movimetacao;
}
/**
* @param aMovimetacao the movimetacao to set
*/
public void setMovimetacao(String aMovimetacao) {
movimetacao = aMovimetacao;
}
/**
* @return the dt_movimentacao
*/
public String getDt_movimentacao() {
return dt_movimentacao;
}
/**
* @param aDt_movimentacao the dt_movimentacao to set
*/
public void setDt_movimentacao(String aDt_movimentacao) {
dt_movimentacao = aDt_movimentacao;
}
/**
* @return the st_documento
*/
public String getSt_documento() {
return st_documento;
}
/**
* @param aSt_documento the st_documento to set
*/
public void setSt_documento(String aSt_documento) {
st_documento = aSt_documento;
}
/**
* @return the cd_documento
*/
public String getCd_documento() {
return cd_documento;
}
/**
* @param aCd_documento the cd_documento to set
*/
public void setCd_documento(String aCd_documento) {
cd_documento = aCd_documento;
}
/**
* @return the cd_movimentacao
*/
public String getCd_movimentacao() {
return cd_movimentacao;
}
/**
* @param aCd_movimentacao the cd_movimentacao to set
*/
public void setCd_movimentacao(String aCd_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…