Dois objetos dentro de uma jComboBox

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

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:

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

[quote=welington2502]Agora me bateu uma confusão rsrs

eu ja achava q estava como objetos no array
[/quote]
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:

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());
            
        }
    }    

[quote=welington2502]Agora aconteceu outra coisa os itens da combobox sumiram qdo fiz isso:
Nao sei se fiz correto;

sendo que o jcbairro é a jcombobox

[code]
public void preencherComboboxBairro() {
List bairros = bairrosDAO.getListaBairro();
jcBairro = new JComboBox(new DefaultComboBoxModel(bairros.toArray()));

    for (Bairros bairro : bairros) {

            jcBairro.addItem(bairro.getBairro());
        
    }
}    

[/code][/quote]
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.

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()));

    }

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

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

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:

[code]
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);
}

}[/code]

Espero ter ajudado,
fique com Deus! :smiley:

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.

[quote=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.[/quote]
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: