Eu criei uma classe AbstractTableModel e depois instanciei a classe, peguei a instancia e adicionei o jTable… ATé nesse ponto tudo ok, o problema é que eu add um oberver nesta classe que criei e não está atualizando o jTable automaticamente, vaja o código abaixo:
public class ProspectsTableModel extends AbstractTableModel implements Observer {
private String[] colunas = {"Criação","Status","Tipo de Pessoa","Nome/Fantasia","Cidade","Tel. 1","Tel. 2","Opções"};
private List<Prospect> prospectsList;
public ProspectsTableModel() {
ControleProspectsSQLLite.getInstance().addObserver(this); //aqui eu adiciono o observer... a classe ControleProspectsSQLLite() extende um Observable
prospectsList = ControleProspectsSQLLite.getInstance().listar();
}
public String[] getColunas(){
return colunas;
}
@Override
public Class<?> getColumnClass(int columnIndex) {
return colunas[columnIndex].getClass();
}
@Override
public String getColumnName(int column) {
return colunas[column];
}
public int getRowCount() {
return prospectsList.size();
}
public int getColumnCount() {
return colunas.length;
}
public Prospect getRowValue(int rowIndex){
return prospectsList.get(rowIndex);
}
public Object getValueAt(int rowIndex, int columnIndex) {
Prospect prospects = prospectsList.get(rowIndex);
Object ret = null;
Date data = null;
SimpleDateFormat dtf = new SimpleDateFormat("dd/MM/yyyy");
switch(columnIndex){
case 0://Criação
data = new Date(Long.parseLong(prospects.getTimesSamp())*1000);
ret = dtf.format(data);
break;
case 1://Status
ret = prospects.getStatus();
break;
case 2://Tipo de Pessoa
if (prospects.getTipoPessoa().equalsIgnoreCase("pessoa_fisica")){
ret = "Pessoa Física";
}else{
ret = "Pessoa Jurídica";
}
break;
case 3: //Nome/Fantasia
if (prospects.getTipoPessoa().equalsIgnoreCase("pessoa_fisica")){
ret = prospects.getNome();
}else{
ret = prospects.getNomeFantasia();
}
break;
case 4: //Cidade
ret = prospects.getCidade();
break;
case 5://Tel. 1
ret = prospects.getRef().get(0).getTelefone().getNumero();
break;
case 6: //Tel. 2
ret = prospects.getRef().get(1).getTelefone().getNumero();
break;
case 7://opções
ret = "+ Opções";
break;
}
return ret;
}
public void update(Observable o, Object arg) {
prospectsList = ControleProspectsSQLLite.getInstance().listar();
fireTableStructureChanged();
}
Analizando o código não teria que atualizar o jTable automaticamente?