Preencher uma JtextField depois que a Jcombobox for selecionarda[RESOLVIDA]

6 respostas Resolvido
M

Bom dia.
Estou querendo ao selecionar uma Jcombobox que receber os estados cadastrados no banco de dados, ele preenchar a JtextField com dados relacionados a estado selecionado.

Ex: Na combobox eu seleciono o estado de São Paulo, então irar preencher a JtextField com a sigla SP.

como esta minha combobox

private void jcbEstadoMouseClicked(java.awt.event.MouseEvent evt) {                                       
        // Evento para limpar e repreencher o combobox
        EstadosDao dao = new EstadosDao();
        List<Estados> listadeestados = dao.listaEstados();
        jcbEstado.removeAllItems();

        for (Estados e : listadeestados) {
            jcbEstado.addItem(e.toString());
        }
    }

metodo listaEstados no dao:

public List<Estados> listaEstados(){
        //Criando lista
        try{
            List<Estados> lista = new ArrayList<>();
            String sql = ("select * from tb_estados");
            PreparedStatement pst = con.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            
            while (rs.next()){
                Estados obj = new Estados();
                obj.setCodigo(rs.getInt("codigo_estado"));
                obj.setEstado(rs.getString("estado"));
                obj.setUf(rs.getString("uf"));
                
                lista.add(obj);
            }
            return lista;
        }catch (SQLException e){
            JOptionPane.showMessageDialog(null, "Erro"+ e);
            return null;
        }
    }

classe estado:

public class Estados {
    
    //atributos
    private int codigo;
    private String estado, uf;
    
       
    //getters and setters

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public String getUf() {
        return uf;
    }

    public void setUf(String uf) {
        this.uf = uf;
    }
    @Override
    public String toString(){
        return this.getEstado();
    }    
    
}

6 Respostas

Lucas_Camara

Vc deve escutar as mudanças da combo:

jcbEstado.addItemListener(new ItemListener() {
    @Override
    public void itemStateChanged(ItemEvent event) {
       if (event.getStateChange() == ItemEvent.SELECTED) {
          Object item = event.getItem();
          // preencha o JTextfield aqui
       }
    }       
});
M

esse evento itemStateChanged eu crio no combobox

Lucas_Camara

Não entendi. Foi uma pergunta ou vc está afirmando? No exemplo que postei, um listener (ItemListener) está sendo adicionado ao combobox jcbEstado.

M

Desculpa…foi uma pergunta esqueci de colocar ?..
agora so tem o itemStateChanged para adicionar na combobox

Lucas_Camara

Ah tah, vc usa ferramentas visuais. Nunca usei, mas deve ser essa opção. Adiciona ela, e veja no código como que o listener é montado.

M
Solucao aceita

Obrigado Lusca_Camara.
O conselho que você me passou me deu uma luz, resolvi da seguinte forma…
Adicionei o evento ActionPerformed na combobox com o seguinte codigo:

private void jcbEstadoActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        jcbEstado.addItemListener(new ItemListener(){
            @Override
            public void itemStateChanged(ItemEvent event){                
                if (event.getStateChange()== ItemEvent.SELECTED){
                    Object item = event.getItem();
                    Estados e = new Estados();
                    e = (Estados)jcbEstado.getSelectedItem(); 
                    jtfUf.setText(e.getUf());                    
                }
                
            }
        });
    }

Obrigado :slightly_smiling_face:

Criado 6 de novembro de 2021
Ultima resposta 20 de nov. de 2021
Respostas 6
Participantes 2