[RESOLVIDO]Problema TableModel

1 resposta
J

Após horas pesquisando sobre TableModel e tentando fazer, não obtive muito sucesso...

O problema é que eu não sei se o que eu já fiz está certo e como colocar os dados na jTable...

Segue as classes:

public class horario {
    
    private String nome;
    private String data;
    private String horario;
    private String procedimento;
    
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
    
    public String getHorario() {
        return horario;
    }

    public void setHorario(String horario) {
        this.horario = horario;
    }
    
    public String getProcedimento() {
        return procedimento;
    }

    public void setProcedimento(String Procedimento) {
        this.procedimento = procedimento;
    }
}

TableModel:

public class Model extends AbstractTableModel {  
  
    private static final long serialVersionUID = 1L;  
  
    /* Lista de Cliente que representam as linhas. */  
    private List<horario> linhas;  
  
    /* Array de Strings com o nome das colunas. */  
    private String[] colunas = new String[]{  
        "Nome","Data","Horário","Procedimento"};  
  
  
  
    /* Cria um ClienteTableModel vazio. */  
    public Model() {  
        linhas = new ArrayList<horario>();  
    }  
  
    /* Cria um ClienteTableModel carregado com 
     * a lista de Cliente especificada. */  
    public Model(List<horario> listaDeHorario) {  
        linhas = new ArrayList<horario>(listaDeHorario);  
    }  
  
  
    /* Retorna a quantidade de colunas. */  
    @Override  
    public int getColumnCount() {  
        // Está retornando o tamanho do array "colunas".  
        return colunas.length;  
    }  
  
    /* Retorna a quantidade de linhas. */  
    @Override  
    public int getRowCount() {  
        // Retorna o tamanho da lista de Cliente.  
        return linhas.size();  
    }  
  
  
    @Override  
    public String getColumnName(int columnIndex) {  
        // Retorna o conteúdo do Array que possui o nome das colunas  
        return colunas[columnIndex];  
    }  
  
    ;  
  
    @Override  
    public Class<?> getColumnClass(int columnIndex) {  
        return String.class;  
    }  
  
    ;  
  
  
    @Override  
    public Object getValueAt(int rowIndex, int columnIndex) {  
            horario horario = linhas.get(rowIndex);  
  
        // Retorna o campo referente a coluna especificada.  
        // Aqui é feito um switch para verificar qual é a coluna  
        // e retornar o campo adequado. As colunas sãoas mesmas  
        // que foram especificadas no array "colunas".  
        switch (columnIndex) {  
  
            // Seguindo o exemplo: "Tipo","Data de Cadastro", "Nome", "Idade"};  
            case 0:  
                return horario.getNome();  
            case 1:  
                return horario.getData();  
            case 2:  
                return horario.getHorario();
            case 3:
                return horario.getProcedimento();
            default:  
                // Isto não deveria acontecer...  
                throw new IndexOutOfBoundsException("columnIndex out of bounds");  
        }  
    }  
  
@Override  
//modifica na linha e coluna especificada  
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {  
      horario horario = linhas.get(rowIndex); // Carrega o item da linha que deve ser modificado  
  
     switch (columnIndex) { // Seta o valor do campo respectivo  
         case 0:  
             horario.setNome(aValue.toString());  
         case 1:  
             horario.setData(aValue.toString());  
         case 2:  
             horario.setHorario(aValue.toString());  
         case 3:  
             horario.setProcedimento(aValue.toString());
  
         default:  
             // Isto não deveria acontecer...               
     }  
     fireTableCellUpdated(rowIndex, columnIndex);  
     }  
  
    //modifica na linha especificada  
    public void setValueAt(horario aValue, int rowIndex) {  
        horario horario = linhas.get(rowIndex); // Carrega o item da linha que deve ser modificado  
  
        horario.setNome(aValue.getNome());  
        horario.setData(aValue.getData());  
        horario.setHorario(aValue.getHorario());  
        horario.setProcedimento(aValue.getProcedimento());  
  
        fireTableCellUpdated(rowIndex, 0);  
        fireTableCellUpdated(rowIndex, 1);  
        fireTableCellUpdated(rowIndex, 2);  
        fireTableCellUpdated(rowIndex, 3); 
  
    }  
    ;  
  
  
    ;  
  
  
    @Override  
    public boolean isCellEditable(int rowIndex, int columnIndex) {  
        return false;  
    }  
  
  
    public horario getHorario(int indiceLinha) {  
        return linhas.get(indiceLinha);  
    }  
  
  
  
    /* Adiciona um registro. */  
    public void addHorario(horario m) {  
        // Adiciona o registro.  
        linhas.add(m);  
  
         
        int ultimoIndice = getRowCount() - 1;  
  
        fireTableRowsInserted(ultimoIndice, ultimoIndice);  
    }  
  
    /* Remove a linha especificada. */  
    public void removeHorario(int indiceLinha) {  
        linhas.remove(indiceLinha);  
  
        fireTableRowsDeleted(indiceLinha, indiceLinha);  
    }  
  
    /* Adiciona uma lista de Cliente ao final dos registros. */  
    public void addListaDeHorario(List<horario> horario) {  
        // Pega o tamanho antigo da tabela.  
        int tamanhoAntigo = getRowCount();  
  
        // Adiciona os registros.  
        linhas.addAll(horario);  
  
        fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);  
    }  
  
    /* Remove todos os registros. */  
    public void limpar() {  
        linhas.clear();  
  
  
        fireTableDataChanged();  
    }  
  
    /* Verifica se este table model esta vazio. */  
    public boolean isEmpty() {  
        return linhas.isEmpty();  
    }  }

A partir daqui que me perdi...:

public void pesquisa(String qry) throws SQLException{
        conexao();
        List<horario> h = new ArrayList<>();
      boolean status = conecta.conecta();
      
        boolean cons = conecta.consulta(qry);       
        ResultSet dados = conecta.getConsulta();
        

        while(dados.next()){
       horario hora = new horario();
        hora.setNome(dados.getString("nome_horario"));
         hora.setData(dados.getString("data_horario"));
          hora.setHorario(dados.getString("horario_horario"));
           hora.setProcedimento(dados.getString("procedimento_horario"));
           h.add(hora);
           
          
           
       
        }
    }

uso assim para poder chamar em algum evento, ex: pesquisa("select * from tbhorario");

Classe que contém a tabela:

public class testeTCC extends javax.swing.JFrame {
     
    
    
    Model modelo;   
    Conexao conecta = new Conexao();
    CarregaTodos carrega = new CarregaTodos();
   
    //modelo criado
    private void setModelo(){
        modelo = new Model();  
       jt_teste.setModel(modelo); 
    }
    
    
    
    public testeTCC() throws SQLException {
        initComponents();
        conecta.setDRIVE("org.gjt.mm.mysql.Driver");
        conecta.setURL("jdbc:mysql://");
        conecta.setHOST("localhost");
        conecta.setBANCO("odonto");
        conecta.setUSUARIO("root");
        conecta.setSENHA("[telefone removido]");
        setModelo();
      
        carrega.pesquisa("select * from tbhorario;");
    }

1 Resposta

J

Não sei se pode dar Double Post, mas já que ninguém respondeu e consegui resolver parcialmente a dúvida então vai a solução:

Parte da classe DAO(creio eu, sou leigo ainda):

public List<horario>getAllHorario(String qry) throws SQLException{
        conexao();
        List<horario> h = new ArrayList<horario>();
        boolean status = conecta.conecta();
           
        boolean cons = conecta.consulta(qry);       
        ResultSet dados = conecta.getConsulta();
    
        while(dados.next()){
          horario hora = new horario();
          hora.setNome(dados.getString("nome_horario"));
         hora.setData(dados.getString("data_horario"));
          hora.setHorario(dados.getString("horario_horario"));
           hora.setProcedimento(dados.getString("procedimento_horario"));
          h.add(hora);
        }
        return h;   
    }

Parte da classe que contém a tabela:

//modelo criado
    private void setModelo() throws SQLException{
        List<horario> h = new CarregaTodos().getAllHorario("select * from tbhorario");
        Model modelo = new Model(h);
        jt_teste.setModel(modelo);      
    }

O novo problema é que a ultima coluna não carrega… a coluna procedimento… as outras vem certinho…:stuck_out_tongue:

@Edit: era pq na classe que tinha os set’s e get’s o procedimento era com letra maiúscula… desculpa ae…

Criado 31 de agosto de 2013
Ultima resposta 31 de ago. de 2013
Respostas 1
Participantes 1