JComboBox com MySQL

1 resposta
S

Olá, gostaria de uma ajuda para popular meu comboBox com os dados que estão cadastrados no MySQL, no caso:

Este é o código apenas do comboBox, claro que possui um conteudo maior, porém o comboBox está vindo em branco no formulário, com items ja cadastro no banco de dados, alguém poderia me ajudar ?

Tabela: cadastro
ID: codigo
Nome: nome

No caso essas são as informações que sao realmente necessárias para aparecer no comboBox, o id como o valor e o nome para identificar, então apenas o nome seria exibido enquanto o codigo que será o real valor na seleção de um elemento no combo.

CadastroDAO.java
public List getList() throws Exception {
        ArrayList consulta = new ArrayList<>();
        String sql = "SELECT * FROM cadastro";
        Connection conn = ConnectionFactory.getConnection();
        PreparedStatement stmt = conn.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery(sql);
        while (rs.next()) {
            consulta.add(new Cadastro(rs.getInt("codigo"), rs.getString("nome")));
        }
        rs.close();
        stmt.close();
        ConnectionFactory.closeConnection(conn);
        return consulta;
    }
Cadastro.java
private List<Cadastro> consulta = new ArrayList();

    public List<Cadastro> getConsulta() {
        return consulta;
    }

    public void setConsulta(List<Cadastro> consulta) {
        this.consulta = consulta;
    }
FrmCadastro.java
public class FrmCadastro extends javax.swing.JFrame {

    private List<Cadastro> consulta = new ArrayList();
    
    public FrmCadastro() {
        initComponents();
        try {
            CadastroDAO cadastroDAO = new CadastroDAO();
            consulta = cadastroDAO.getList();
            comboConsultar.setModel(new DefaultComboBoxModel(consulta.toArray()));
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "ERRO:" + e.getMessage());
        }
   }
}

1 Resposta

ViniGodoy

Primeiro conserte seu cadastro DAO:

public List<Cadastro> getList() throws Exception { List<Cadastro> consulta = new ArrayList<>(); Connection conn = ConnectionFactory.getConnection(); try (PreparedStatement stmt = conn.prepareStatement("SELECT * FROM cadastro")) { try (ResultSet rs = stmt.executeQuery(sql)) { while (rs.next()) { consulta.add(new Cadastro(rs.getInt("codigo"), rs.getString("nome"))); } ConnectionFactory.closeConnection(conn); } } return consulta; }

Depois, adicione um método toString na sua classe Cadastro. Ele deve retornar a informação que será exibida no combo:

public class Cadastro { @Override public String toString() { return nome; } }

Após a seleção no combo, o objeto inteiro é retornado e não só seu código:

Cadastro c = (Cadastro)comboConsultar.getSelectedItem();
Criado 10 de outubro de 2013
Ultima resposta 12 de out. de 2013
Respostas 1
Participantes 2