[RESOLVIDO] Duvidas em carregar Combox com List<Cliente>

13 respostas
rafaelshock

bom dia galera, estou acompanhando um curso onde o maluco faz a seguinte coisa...

private void loadInitialComboData() {
        // The Type Combo
        DefaultComboBoxModel cbm = new DefaultComboBoxModel(AnimalType.values());
        cmbType.setModel(cbm);

        // The Owner Combo
        try {
            CustomerDAO customerDAO = new CustomerDAO();
            Vector<Customer> customers = new Vector<Customer>(customerDAO.getAllCustomers());
            DefaultComboBoxModel cbmCustomer = new DefaultComboBoxModel(customers);
            cmbOwner.setModel(cbmCustomer);
        } catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(this, "Error loading the owners list");
        }

    }

mas o meu não consigo completar...

private void carregarcombox() {
    //carregar os tipos de animais    
    DefaultComboBoxModel cbm = new DefaultComboBoxModel(TipoAnimal.values());
    cbtipo.setModel(cbm);
    
    //carregar os clientes 
      try {
            ClienteDAO clienteDAO = new ClienteDAO();
            Vector<Cliente> cliente = new Vector<Cliente>(Cliente// não consigo chamar meu metodo Listar() aqui... da erro
            DefaultComboBoxModel cbmcliente = new DefaultComboBoxModel(cliente);
            cbcliente.setModel(cbmcliente);
        } catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(this, "Erro ao carregar a lista de proprietários");
        }

    }

pro favor alguém me ajuda!

13 Respostas

michetti

Segue o link de onde postei sobre o mesmo problema e postei a solução… http://www.guj.com.br/java/305752-resolvido-lista-retornando-mesmo-valores

rafaelshock

seria isso aqui?

try {
            ClienteDAO clienteDAO = new ClienteDAO();
            List<Cliente> lista = clienteDAO.listar();
            DefaultComboBoxModel cbmcliente = new DefaultComboBoxModel();
            cbcliente.setModel(cbmcliente);
        } catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(this, "Erro ao carregar a lista de proprietários");
        }

    }

tipo no combox da tela estava escrito item1, item2 ma depois desse codigo fico tudo em branco!

michetti

Não se esqueça de usar este comando :
jCBHorario.removeAllItems();

Neste código que você postou você somente setou qual modelo seu combobox vai usar. Para adicionar os valores no ComboBox use:

jCBHorario.removeAllItems(); ClienteDAO clienteDAO = new ClienteDAO(); List<Cliente> lista = clienteDAO.listar(); DefaultComboBoxModel cbmcliente = new DefaultComboBoxModel(); for ( Cliente cliente : lista ) { cbmcliente .addElement( cliente.getCliente()); cbcliente.setModel(cbmcliente);

rafaelshock

estou com esses problemas ainda… :frowning:

getCliente da erro, ai aparece os campos por exemplo getCodigo_cliente, getNome_cliente e etc…

e o jCBHorario.removeAllItems(); está com erro, de onde ele vem?

michetti

jCBHorario.removeAllItems(); onde esta jCBHorario você deve colocar o nome da variável do seu Combobox.

cliente.getCliente() é assim… cliente é uma variável do tipo Cliente, e o getCliente são os metodos get e set da classe onde você cria os get e set…

rafaelshock

então fiz assim…

try {
           cbcliente.removeAllItems();               
           ClienteDAO clienteDAO = new ClienteDAO();    
           List<Cliente> lista = clienteDAO.listar();    
           DefaultComboBoxModel cbmcliente = new DefaultComboBoxModel();    
           for ( Cliente cliente : lista ) {      
           cbmcliente .addElement( cliente.getClass());      
           cbcliente.setModel(cbmcliente);
           }
          } catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(this, "Erro ao carregar a lista de proprietários");
        }

só que ai aparece assim…

no combox br.com.banhotosa.model.cliente

ai no curso do cara aqui ele pede para quando acontecer isso fazer isso aqui

@Override public String toString() { return getNome(); }

mas não funcionou não!

Roselito_Favero_da_S

Não entendo muito de ComboBoxModel, mas comparando os códigos, acho que você deveria usar:

List<Cliente> lista = clienteDAO.listar();      
          DefaultComboBoxModel cbmcliente = new DefaultComboBoxModel(lista);

compare com o original:

Vector<Customer> customers = new Vector<Customer>(customerDAO.getAllCustomers());  
          DefaultComboBoxModel cbmCustomer = new DefaultComboBoxModel(customers);
michetti

Eu não sei como funciona isso

@Override public String toString() { return getNome(); }

eu faço assim:

Private String Nome; public String getNome() { return Nome; } public void setNome(String Nome) { this.Nome= Nome; }

e aqui cbmcliente .addElement( cliente.getClass());
eu uso getNome(); no seu caso pode ser este o problema… você deu um getClass();

rafaelshock

agora eu coloquei assim

cbcliente.removeAllItems(); ClienteDAO clienteDAO = new ClienteDAO(); List<Cliente> lista = clienteDAO.listar(); DefaultComboBoxModel cbmcliente = new DefaultComboBoxModel(); for ( Cliente cliente : lista ) { cbmcliente .addElement( cliente.getNome()); // mudei aqui cbcliente.setModel(cbmcliente); }

está certo?
estou trazendo certinho!!

michetti

E deu certo agora? mostrou os dados no combobox?

rafaelshock

bem mostrou o que eu queria que era o nome do proprietario…

mas agora pensando aqui, tipo assim está facil de achar os proprietarios tah afacil só tem 3, mas imagino eu quando tiver 50 um exemplo?

sei que em Delphi se Utiliza o Lookup que faz o papel de combox e busca ao mesmo tempo, em Java o que eu poderia usar?

michetti

Creio que usando List não tenha problema… conseguiria adptar um numero grande… faz um teste ai, adiciona vários e vê o desempenho do mesmo.

rafaelshock

Agradeço a todos… deu certinho :smiley:

Criado 6 de novembro de 2013
Ultima resposta 7 de nov. de 2013
Respostas 13
Participantes 3