Associei uma AbstractTableModel a uma List, mas a tabela não atualiza em tempo de execução.
Segue os codigos:
public List<PacienteBEAN> listPaciente() {
Connection con = ConnectionFactory.Conexao();
PreparedStatement stmt = null;
ResultSet rs = null;
List<PacienteBEAN> pacientes = new ArrayList<>();
try{
stmt = con.prepareStatement("SELECT * FROM paciente");
rs = stmt.executeQuery();
while (rs.next()) {
PacienteBEAN paciente = new PacienteBEAN();
paciente.setNome(rs.getString("nome"));
paciente.setApelido(rs.getString("apelido"));
paciente.setSexo(rs.getString("sexo"));
paciente.setNascimento(rs.getString("nascimento"));
paciente.setCpf(rs.getString("cpf"));
paciente.setSus(rs.getString("sus"));
paciente.setEstado(rs.getString("estado"));
paciente.setCidade(rs.getString("cidade"));
paciente.setRua(rs.getString("rua"));
paciente.setBairro(rs.getString("bairro"));
paciente.setNumero(rs.getString("numero"));
paciente.setCelular(rs.getString("celular"));
paciente.setEmail(rs.getString("email"));
pacientes.add(paciente);
}
} catch (SQLException ex) {
Logger.getLogger(PacienteDAO.class.getName()).log(Level.SEVERE, null, ex);
} finally {
ConnectionFactory.closeConnection(con, stmt, rs);
}
return pacientes;
}
public Paciente() {
setExtendedState(JFrame.MAXIMIZED_BOTH);
initComponents();
PacienteDAO sql = new PacienteDAO();
TableModelPaciente model = new TableModelPaciente(sql.listPaciente());
jtbPacientes.setModel(model);
model.fireTableDataChanged();
}
package Model.DAO;
import Model.BEAN.PacienteBEAN;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class TableModelPaciente extends AbstractTableModel{
private static final int ColNome = 0;
private static final int ColApelido = 1;
private static final int ColSexo = 2;
private static final int ColNascimento = 3;
private static final int ColCPF = 4;
private static final int ColSUS = 5;
private static final int ColEstado = 6;
private static final int ColCidade = 7;
private static final int ColRua = 8;
private static final int ColBairro = 9;
private static final int ColNumero = 10;
private static final int ColTelefone = 11;
private static final int ColEmail = 12;
private final List<PacienteBEAN> pacientes;
private final String colunas[] = {"Nome", "Apelido","Sexo", "Nascimento", "CPF", "Cartão SUS", "Estado", "Cidade", "Rua", "Bairro", "Numero", "Telefone", "E-mail"};
public TableModelPaciente(List<PacienteBEAN> listPaciente) {
this.pacientes = listPaciente;
}
@Override
public int getRowCount() {
return this.pacientes.size();
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public String getColumnName(int column){
return colunas[column];
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex){
case ColNome:
return pacientes.get(rowIndex).getNome();
case ColApelido:
return pacientes.get(rowIndex).getApelido();
case ColSexo:
return pacientes.get(rowIndex).getSexo();
case ColNascimento:
return pacientes.get(rowIndex).getNascimento();
case ColCPF:
return pacientes.get(rowIndex).getCpf();
case ColSUS:
return pacientes.get(rowIndex).getSus();
case ColEstado:
return pacientes.get(rowIndex).getEstado();
case ColCidade:
return pacientes.get(rowIndex).getCidade();
case ColRua:
return pacientes.get(rowIndex).getRua();
case ColBairro:
return pacientes.get(rowIndex).getBairro();
case ColNumero:
return pacientes.get(rowIndex).getNumero();
case ColTelefone:
return pacientes.get(rowIndex).getCelular();
case ColEmail:
return pacientes.get(rowIndex).getEmail();
default:
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex){
return false;
}
//define o tipo de dados que as colunas recebem, se for a coluna 0 que é meu ID, vai ser inteiro, senão for a coluna 0 então é a coluna 1 que é
@Override
public Class<?> getColumnClass(int columnIndex){
switch(columnIndex){
case ColNome:
return String.class;
case ColApelido:
return String.class;
case ColSexo:
return String.class;
case ColNascimento:
return String.class;
case ColCPF:
return String.class;
case ColSUS:
return String.class;
case ColEstado:
return String.class;
case ColCidade:
return String.class;
case ColRua:
return String.class;
case ColBairro:
return String.class;
case ColNumero:
return String.class;
case ColTelefone:
return String.class;
case ColEmail:
return String.class;
default:
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
}