[RESOLVIDO] JComboBox Tipo <Object> - Retornar Cadastro

4 respostas
programaçãojava
D

Boa Tarde! Pessoal estou com a seguinte dúvida:
Em uma tela de consulta de cadastro eu tenho um JComboBox onde tem o Sexo - Masculino | Feminino, depois que eu cadastrar uma pessoa e quero consultar o cadastro, ai na Combo eu quero retornar o que foi cadastrado. Se a Combo for do tipo String eu faço da seguinte forma:

Agora se ela for do tipo Object ela não me retorna nada na Combo se faço dessa forma. Como eu tenho que fazer??

Desculpa a pergunta, parece besta, mas não consegui fazer.

4 Respostas

J

Boa tarde!

Para preencher sua combo com object você pode fazer da seguinte maneira:

Você cria uma consulta que retorne uma List da informação desejada e implementa este método:
Ele faz o seguinte, ele compara o objeto do seu modelo com os objetos da List, e quando o objeto da List for igual o objeto do seu modelo, ele retornará a informação para a combo como um objeto!
Lembrando que para apresentar a escrita na combo carregada com objetos você deve antes implementar o método toString() no seu modelo de pessoa/gênero.

private void selecionaSexo(ModPessoa modPessoa,JComboBox comboPessoa) {
        try {
            for (ModPessoa pess: ListPessoas) {
                if (pess.getGenero().getSexo().equals(modPessoa.getGenero().getSexo())) {   
                    comboPessoa.setSelectedItem(pess);
                }
            }
        } catch (Exception e) {
            comboPessoa.setSelectedIndex(-1);
        }
    }

e chame este método no momento em que desejar recuperar a informação como object:

selecionaPessoa(modeloPessoa.getGenero() , jCBPessoa);

Espero ter ajudado!
Boa sorte, abraços.

4

Eu tenho a solução amigo, montei uma classe esses dias que controla jComboBox, essa classe permite eu jogar Objetos de qualquer tipo para o mesmo.

package model;

public class ComboBoxModelAll extends javax.swing.DefaultComboBoxModel<Object> {

public ComboBoxModelAll(java.util.List<? extends Object> c) {
    Object[] elementData = c.toArray();
    int size;
    if ((size = elementData.length) != 0) {
        if (elementData.getClass() != Object[].class) {
            elementData = java.util.Arrays.copyOf(elementData, size, Object[].class);
        }
        for (Object ob : elementData) {
            this.addElement(ob);
        }
    }
}
}

Para utiliza-la faça o seguinte, crie esta classe e instancie desta forma:

List<Pessoa> pessoas = new ControllPessoa.findAllEntities(); // isso eu uso para buscar pessoas
seuJComboBox.setModel(new ComboBoxModelAll(pessoas)); // isso e importante

Para pegar o item selecionado eu faço o seguinte:

Pessoa pessoa = (Pessoa) seuComboBox.getModel().getSelectedItem();

PROBLEMAS DA CLASSE E SUAS SOLUÇÕES

O maior problema da minha classe é como fazer para aparecer o nome da pessoa (por exemplo) para selecionar, pois eu estou trabalhando com objetos que possuem muitos atributos, porém existe uma coisa linda chamada toString que vc pode usar na classe de entidade.
Seria mais ou menos assim, na entidade.

public class Pessoa(){

     private int id;
     private String nome;
     private int idade;
     private String cpf;

     public Pessoa(){

     }

    // GETTERS E SETTERS

    @Override
    public String toString() { // Aqui vc escolhe o que visualizará no comboBox
           return nome; // Quero que apareça o nome da pessoa
    }
   
}
D

Muito obrigado pela ajuda cara.

Resolvi da seguinte forma:

Quando eu fosse consultar o cadastro da pessoa na combo eu queria retornar o Sexo dela
estava faltando esse getModel().

Agradeço muito ajuda.

D

Cara muito Obrigado também pela ajuda.

Vi o getModel() na explicação que você deu e minha mente se abriu HAHAHA.

Agradeço a colaboração.

Criado 1 de dezembro de 2016
Ultima resposta 2 de dez. de 2016
Respostas 4
Participantes 3