Dùvidas sobre como pegar objeto contido em um JCombobox

6 respostas
S

Boa noite galera,

Minha dúvida é a seguinte, estou exibindo dados em um JCombobox vindos de uma determinada tabela do meu BD, porem, não sei como pegar um desses dados para salvar em outra tabela do BD, esses dados estão vindo de minha DAO e sendo add na JCombobox através de uma LIST, o meu problema é que ao instanciar minha aplicação, o evento ActionListener referente ao meu jcombobox tem exibido o seguinte erro, não permitindo nem que eu selecione um dado de meu JCombobox.

//Erro exibido no momento Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to Bruno.Igreja.Modelo.Cargos

Segue abaixo um pouco do meu código para que os amigos possam me ajudar melhor.

//Minha Dao
public List<Cargos> RetornaCargos() {
         String sql  = "Select * from Cargos";  
         PreparedStatement stmt;    
        try {
            stmt = connection.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();  
    
          while(rs.next()){  
            Cargos cargo = new Cargos();
            cargo.setTipo(rs.getString("tipo"));
            dados_cargos.add(cargo);
            System.out.println(cargo);
         }   
       } catch (SQLException ex) {
            Logger.getLogger(CadastrarDadosIgrejaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
         return dados_cargos;  
     }
//Evento realizado logo ao instanciar minha aplicação
 CadastrarMembroDAO exibirCargos;
        try {
            exibirCargos = new CadastrarMembroDAO();
            tipos_cargos = exibirCargos.RetornaCargos();
            
            for (Cargos c : tipos_cargos)
            {
                cbCargo.addItem(c.getTipo());   
            }
        } 
          catch (SQLException ex) {
            Logger.getLogger(CadastrarMembro.class.getName()).log(Level.SEVERE, null, ex);
          }
//Evento ao selecionar JCombobox
if(cbCargo.getSelectedIndex() != -1){  
        Cargos pegacargo = (Cargos) cbCargo.getSelectedItem();
        if(pegacargo == null) {
        return;  
        }
         id_cargo = pegacargo.getId();
}

A minha necessidade era pegar esse id_cargo pra poder manda essa info para o BD.
Desde já agradeço a ajuda de todos!!!

6 Respostas

L

Faça um

String retorno = cbCargo.getSelectedItem().toString();

e veja o que esse cara ta retornando.

Abraços

S

Boa noite a todos,
Primeiro obrigado pela resposta LSouza13, sobre o retorno do conteúdo da String, realmente tá exibindo o conteúdo selecionado no jcombobox, a minha dúvida é na hora de salvar essa informação no banco, porque eu tenho que pegar a id do jcombobox selecionado e não o nome dele. Com base nos meus dados repassados, daria para me dar uma idéia de como fazer isso?

Desde já agradeço a ajuda de todos!!!

L

Tente ver o que é retornado em

cbCargo.getSelectedItem().getValue();
S

Não dá certo

Cargos pegacargo = (Cargos) cbCargo.getSelectedItem().getValue();
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: java.lang.Object.getValue

Obrigado mais uma vez por responder

S

Galera,

Ninguem teria mais alguma sugestão???

Abraço a todos!

E

lsouza13:
Tente ver o que é retornado em

cbCargo.getSelectedItem().getValue();

Aham, não se pode chamar “getValue” porque getSelectedItem retorna um java.lang.Object.

Basta fazer:

Cargos pegacargo = (Cargos) cbCargo.getSelectedItem();

E seu Sebastião, nem sempre a gente dá dicas 100% corretas (a gente se engana, também.)
Se possível, em vez de cruzar os braços, dê uma ligeira olhadinha na documentação:

http://docs.oracle.com/javase/7/docs/api/javax/swing/JComboBox.html#getSelectedItem()

Criado 16 de março de 2013
Ultima resposta 19 de mar. de 2013
Respostas 6
Participantes 3