Jtable com arraylist

5 respostas
R

Olá pessoal
estou com um problema, tenho um aplicativo em jse e tenho que listar um jtable com um arraylist<clscliente_ent>ListaClie
onde ListaCliente recebe os dados de clscliente_dao.listarclientes();
Criei uma classe model extend AbstractTableModel para modelar o jtable, so que qdo é executado ele coloca naos campos o abcdario em vez
dos meus atributos de clientes e também nao está listando os dados, alguém pode me ajudar?

Segue abaixo o codigo para modelar jtable

private class AgendamentoModel extends AbstractTableModel {
        private List&lt;clscliente_ent&gt;ListaClie;

        public void setAgendamento(List&lt;clscliente_ent&gt;ListaClie){
            this.ListaClie = ListaClie;
        }

        public int getColumnCount() {
          return 11;
        }
        
        public String getColunName(int col){
            switch (col) {
             case 0:
                return "ID";
             case 1:
                return "Data e Hora";
             case 2:
                return "Tipo";
             case 3:
                return "Nome";
             case 4:
                return "Endereço";
             case 5:
                return "Bairro";
             case 6:
                return "Pais";
             case 7:
                return "Estado";
             case 8:
                 return "Cidade";
             case 9:
                 return "Cep";
             case 10:
                 return "Telefone 1";
             default:
                return null;
          }
            
        }

        public int getRowCount() {
          
            //variaveis
            int saida;

            //verificar
           if(findice &gt; 0)
             saida= findice;
           else
             saida = 0;

           return saida;
        }  

        public Object getValueAt(int row, int col) {
            //verificar
            if(ListaClie!= null && row &gt;=0 && row &lt; ListaClie.size()){
             clscliente_ent clie =  ListaClie.get(row);
           
            switch (col) {
             case 0:
                  return ListaClie.get(findice-1).getIdclie();
             case 1:
                  return ListaClie.get(findice-1).getData();
             case 2:
                  return ListaClie.get(findice-1).getTipo();
             case 3:
                  return ListaClie.get(findice-1).getNome();
             case 4:
                  return ListaClie.get(findice-1).getEndereco();
             case 5:
                  return ListaClie.get(findice-1).getBairro();
             case 6:
                  return ListaClie.get(findice-1).getIpais();
             case 7:
                  return ListaClie.get(findice-1).getIestado();
             case 8:
                  return ListaClie.get(findice-1).getIcidade();
             case 9:
                  return ListaClie.get(findice-1).getCep();
             case 10:
                  return ListaClie.get(findice-1).getFone1();
            }

           }
           return null;
        }

    }

E para obterdados

public void obter_dados()
    {//inicio do mento obter dados cliente
        //preencher ficha de empresa
        ListaClie = clsCliente_dao.ListarClie();
        indice = ListarClie.size();

        //montar modelo
        AgendamentoModel modelo = new AgendamentoModel();
        jgride.setModel(modelo);
      
    }//fim do mentodo obter dados cliente

Qdo eu coloco jgride.setModel(modelo); aplico o modelo ao jgride onde jgride é um jtable
porque não exibe os atributos existente em modelo.getColunName() e porque nao exibe os dados populados em Object getValueAt(int row, int col) ?

Por favor me ajudem

Desde já agradeço

5 Respostas

Marck

Olá,

Faltou um “m” no nome do seu metodo.

public String getColumnName(int col)

abraço

R

Olá caro colega
fiz os testes e da mesma forma não lista os dados
apesar q o caracter “m” diferenciou, incluiu os atributos da classe cliente…
porém não lista os registros…
Está faltando alguma coisa?

Marck

Ok!
Mas as colunas apareceram, certo?

Tenta colocar assim nos metodos:

public Object getValueAt(int row, int col) {
         
         if(ListaClie == null ||ListaClie.isEmpty())         
             return null;

         switch (col) {
          case 0:
               return ListaClie.get(row).getIdclie();
          case 1:
               return ListaClie.get(row).getData();
          case 2:
               return ListaClie.get(row).getTipo();
          case 3:
               return ListaClie.get(row).getNome();
          case 4:
               return ListaClie.get(row).getEndereco();
          case 5:
               return ListaClie.get(row).getBairro();
          case 6:
               return ListaClie.get(row).getIpais();
          case 7:
               return ListaClie.get(row).getIestado();
          case 8:
               return ListaClie.get(row).getIcidade();
          case 9:
               return ListaClie.get(row).getCep();
          case 10:
               return ListaClie.get(row).getFone1();
               default:
                   return null;
         }
     }

public int getRowCount() {

if(ListaClie == null || ListaClie.isEmpty())
         return 0;
     
     return ListaClie.size();
 }

abraço

R

Olá Mark
Valeu… funcionou
tinha erro no if e no controle (row) retornou linha e lista legal

Mais surgiu uma duvida… tem como selecionar uma linha da jtable e pegar o valor do ID?
por exemplo
ID | Nome
1 | João Silva
2 | Maria Aparecida
3 | Mario Serra

Selecionar a linha 2 e pegar o item do ID da linha 2

Desde já agradeço

ViniGodoy

No seu model, crie um método:

public clscliente_ent get(int row) { return ListaClie.get(row); }
E então, você faz:

clscliente_ent selecionado = seuModel.get(suaTable.getSelectedRow());

E então é só usar o selecionado.getIdclie();

Outra dica. Sempre que sobrescrever métodos use a anotação @Override, por exemplo:

@Override public Object getValueAt(int row, int col) {

Isso fará com que o compilador gere um erro, caso não esteja havendo uma sobrescrição. Se você tivesse usado essa anotação, teria recebido um erro no getColumnCount, pois ele estava escrito errado.

Criado 26 de maio de 2010
Ultima resposta 27 de mai. de 2010
Respostas 5
Participantes 3