Dois objetos dentro de uma jComboBox

11 respostas
welington2502

Boa noite pessoal.
Tenho uma duvida.
fiz um jComboBox que esta funcionando com dois objetos. (idBairro e Bairros).

Porem o que eu quero. na hora de gravar no banco de dados, é para gravar apenas o idbairro e deixar o jComboBox visualizando o Bairro. É possivel?

Abraços

11 Respostas

Nicolas_Fernandes

Opa, welington2502!
Cara, comece a trabalhar com objetos diretamente. Você passa objetos para o componente e recupera objetos!

Para criar a sua JComboBox, faça assim:

List<Bairros> bairros = bairrosDAO.getLista(); jcBairro = new JComboBox(new DefaultComboBoxModel(bairros.toArray()));
E, para recuperar o item selecionado:

Com o objeto em mãos, você tem o ID que você precisa!

Espero ter ajudado,
fique com Deus! :smiley:

welington2502

Agora me bateu uma confusão rsrs

eu ja achava q estava como objetos no array
[code]

e agora esse aqui? o que seria a entidade que vc colocou?

Bairro entidadeBairro = (Bairro) jcBairro.getSelectedItem();

obrigadão até o momento

Nicolas_Fernandes

welington2502:
Agora me bateu uma confusão rsrs

eu ja achava q estava como objetos no array


Não não, você fez um array de Strings (quando usava o nome do bairro) ou um array de inteiros (quando usava o idBairro).
Você tem um array de objetos como faz da maneira que te mostrei.

Faça o teste: Adicione um Listener na JComboBox e coloque o seguinte código na hora que você mudar o item selecionado:

Object selectedItem = jcBairro.getSelectedItem(); // recupero o item selecionado...
Bairro entidadeBairro = (Bairro) selectedItem; // converto o item selecionado no objeto Bairro...

// e exibo uma informação.
JOptionPane.showMessageDialog(null, String.format("Você selecionou: %s", entidadeBairro.getNome()));

Abraços,
fique com Deus! :smiley:

welington2502

Agora aconteceu outra coisa os itens da combobox sumiram qdo fiz isso:
Nao sei se fiz correto;

sendo que o jcbairro é a jcombobox

public void preencherComboboxBairro() {
        List<Bairros> bairros = bairrosDAO.getListaBairro();
        jcBairro = new JComboBox(new DefaultComboBoxModel(bairros.toArray()));

        for (Bairros bairro : bairros) {

                jcBairro.addItem(bairro.getBairro());
            
        }
    }
Nicolas_Fernandes
welington2502:
Agora aconteceu outra coisa os itens da combobox sumiram qdo fiz isso: Nao sei se fiz correto;

sendo que o jcbairro é a jcombobox

public void preencherComboboxBairro() {
        List<Bairros> bairros = bairrosDAO.getListaBairro();
        jcBairro = new JComboBox(new DefaultComboBoxModel(bairros.toArray()));

        for (Bairros bairro : bairros) {

                jcBairro.addItem(bairro.getBairro());
            
        }
    }
O código é só esse:
List<Bairros> bairros = bairrosDAO.getListaBairro();
        jcBairro = new JComboBox(new DefaultComboBoxModel(bairros.toArray()));
Você instancia a sua JComboBox e passa um modelo pra ela. Esse modelo trata de preenchê-la. Você não precisa daquele foreach teu.
welington2502

Me desculpe ainda estou meio que perdido; :oops:
esse codigo esta correto?

Note que eu coloquei um print para ver se esta extraindo do banco e esta. funcionando normal essa parte, porém na hora de preencher o o combobox nao esta com o novo codigo.

public List<Bairros> getListaBairro() {

        try {
            List<Bairros> bairro = new ArrayList<Bairros>();
            
            stmt = con.prepareStatement("select idbairro, bairro from cadastro_bairros order by bairro");
            rs = stmt.executeQuery();

            while (rs.next()) {
                
                Bairros bairros = new Bairros();
                bairros.setIdBairro(rs.getInt("idbairro"));
                bairros.setBairro(rs.getString("bairro"));
                bairro.add(bairros);

                System.out.println("Classe BairrosDAO:  " + rs.getInt("idbairro") + " - Bairros: " + rs.getString("bairro"));

            }
            rs.close();
            stmt.close();
            return bairro;
        } catch (Exception e) {
            System.out.println("Erro ao preencher o combobox" + e.getMessage());
        }
        return getListaBairro();

    }

E esse está correto ou seria em outro lugar? pois estou fazendo assim estou colocando o preencherComboboxBairro() dentro do formWindowOpened para iniciar com a tela

public void preencherComboboxBairro() {

        List<Bairros> bairros = bairrosDAO.getListaBairro();
        jcBairro = new JComboBox(new DefaultComboBoxModel(bairros.toArray()));

    }
Nicolas_Fernandes

Coloca isso:List<Bairros> bairros = bairrosDAO.getListaBairro(); jcBairro = new JComboBox(new DefaultComboBoxModel(bairros.toArray()));
No construtor da classe!

welington2502

ainda nao funcionou.
Já estou ficando sem graça de ficar te incomodando rsrs

Coloquei ele no construtor e nada ainda.

public Cadastro_Clientes() {

        List<Bairros> bairros = bairrosDAO.getListaBairro();
        jcBairro = new JComboBox(new DefaultComboBoxModel(bairros.toArray()));
        
        setLocation(550, 210);

        Tema tema = new Tema();
        initComponents();

    }

abs

Nicolas_Fernandes
Você tá fazendo com o Matisse do Netbeans? Se estiver, clique em Propriedades da sua JComboBox, edite o código e coloque lá:
List<Bairros> bairros = bairrosDAO.getListaBairro(); 
jcBairro.setModel(new DefautlComboBoxModel(bairros));
Como eu odeio o Matisse do Netbeans, à mão ficaria assim:
public class FormularioTeste extends JFrame {

    private JComboBox comboboxBairros;
    
    public FormularioTeste() {

        try {

            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setResizable(false);

            List<Bairro> entidadeBairros = new ArrayList<Bairro>();
            entidadeBairros.add(new Bairro(1L, "Bairro 1"));
            entidadeBairros.add(new Bairro(2L, "Bairro 2"));
            entidadeBairros.add(new Bairro(3L, "Bairro 3"));
            entidadeBairros.add(new Bairro(4L, "Bairro 4"));
            entidadeBairros.add(new Bairro(5L, "Bairro 5"));

            comboboxBairros = new JComboBox(new DefaultComboBoxModel(entidadeBairros.toArray()));
            add(comboboxBairros);
        }
        catch (Exception generalException) {
            generalException.printStackTrace();
        }
    }

    public void exibirFormulario() {
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
}

Espero ter ajudado,
fique com Deus! :D

welington2502

Sim eu uso o netbeans… vejo muita gente reclamando, sou iniciante e fazer o codigo na mão é dificil para quem esta começando, eu tenho o eclipse aqui no meu pc tbm, porem é bem dificil fazer no codigo cru e no netbeans ja tenho um pouco de facilidade pq ja tem muitas coisas, prontas só precisa ajustar o codigo.

agradeço muito a sua paciencia e ajudou sim agora q vc ja deu a dica vou tentar rachar a cabeça

obrigadão.

Nicolas_Fernandes

welington2502:
Sim eu uso o netbeans… vejo muita gente reclamando, sou iniciante e fazer o codigo na mão é dificil para quem esta começando, eu tenho o eclipse aqui no meu pc tbm, porem é bem dificil fazer no codigo cru e no netbeans ja tenho um pouco de facilidade pq ja tem muitas coisas, prontas só precisa ajustar o codigo.

agradeço muito a sua paciencia e ajudou sim agora q vc ja deu a dica vou tentar rachar a cabeça

obrigadão.


Como você acabou de dizer: você é iniciante. Cara, inicie pelo caminho das pedras. Faça suas interfaces na mão, na unha, na raça ou quaisquer adjetivos que inventaram pra situação. Antes de começar a usar um gerenciador de leiautes, você tem que saber os princípios do mesmo.
Você coloca um layout de grade e joga alguns componentes dentro dele. Você sabe como funciona? E se um dia precisar fazer a mão? Você tem que saber o princípio pra depois usar a facilidade.
Recomendo fortemente que você faça seus formulários na mão para aprender.

Abraços,
fique com Deus! :smiley:

Criado 15 de março de 2012
Ultima resposta 16 de mar. de 2012
Respostas 11
Participantes 2