Ola a todos, estou com um probleminha aqui, criei uma jTable para mostrar os dados no banco, ele mostra tudo certinho, porém quando vou inserir um novo registro ele não atualiza o table, para que isso acontece eu tenho que fechar a tela e abri-la de novo, ja tentei usar fireTableDataChanged, chamar o método “adiciona” do meu model e o repaint e nenhum deles funcionou, continua o mesmo problema.
esse é meu TableModel
public class ProgramaHistoricoTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private List<ProgramaHistorico> pHistorico;
public ProgramaHistoricoTableModel() {
// no construtor, instanciamos o List
pHistorico = new ArrayList<ProgramaHistorico>();
}
public ProgramaHistoricoTableModel(List<ProgramaHistorico> lista) {
this();
pHistorico.addAll(lista);
}
@Override
public Class<?> getColumnClass(int coluna) {
return String.class;
}
public int getColumnCount() {
return 5;
}
@Override
public String getColumnName(int coluna) {
switch (coluna) {
case 0:
return "ProgId";
case 1:
return "IdHistórico";
case 2:
return "Data";
case 3:
return "Hora";
case 4:
return "Programador";
default:
return "";
}
}
public int getRowCount() {
return pHistorico.size();
}
public Object getValueAt(int linha, int coluna) {
ProgramaHistorico ph = (ProgramaHistorico)pHistorico.get(linha);
switch (coluna) {
case 0:
return ph.getProgId();
case 1:
return ph.getIdprogramahistorico();
case 2:
return ph.getData();
case 3:
return ph.getHora();
case 4:
return ph.getProgramador();
default:
return null;
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
@Override
public void setValueAt(Object valor, int linha, int coluna) {
// aqui devemos atualizar o valor de nossos Clientes
// vemos em qual linha ele está
ProgramaHistorico c = new ProgramaHistorico();
// e vemos o que será atualizado
for (int i = 0; i < 6; i++) {
switch (i) {
case 0:
c.setProgId(((ProgramaHistorico) valor).getProgId());
break;
case 1:
c.setIdprogramahistorico(((ProgramaHistorico) valor).getIdprogramahistorico());
break;
case 2:
c.setProgramador(((ProgramaHistorico) valor).getProgramador());
break;
case 3:
c.setDescricao(((ProgramaHistorico) valor).getDescricao());
break;
case 4:
c.setData(((ProgramaHistorico) valor).getData());
break;
case 5:
c.setHora(((ProgramaHistorico) valor).getHora());
break;
}
}
pHistorico.add(c);
// é importante notificar os listeners a cada alteração daew assim...
fireTableDataChanged();
}
public void adiciona(ProgramaHistorico ph, int progId) {
adicionaLista(ProgramasDaoImpl.listarHistoricosProgramas(progId));
pHistorico.add(ph);
fireTableRowsInserted(pHistorico.size() + 1, pHistorico.size() + 1);
}
public void remove(int indice) {
pHistorico.remove(indice);
fireTableRowsDeleted(indice, indice);
}
public int getIndice(Programa c) {
return pHistorico.indexOf(c);
}
public void adicionaLista(List<ProgramaHistorico> lista) {
int i = pHistorico.size();
pHistorico.addAll(lista);
fireTableRowsInserted(i, i + lista.size());
}
public void limpaLista() {
int i = pHistorico.size();
pHistorico.clear();
fireTableRowsDeleted(0, i - 1);
}
}
e chamo o metodo adiciona aqui…
public void refreshTable(ProgramaHistorico prog){
model.adiciona(prog,prog.getProgId());
instanciaComponentes();
jtable.repaint();
}
espero que alguem possa me ajudar…ate mais