Filtro em combobox java

Galera alguém pode me ajudar? Queria fazer um filtro que para cada letra que eu digitasse no combo-box ele retornava o filtro. Obrigado

1 curtida

Coloca um evento de “Key Released” quando vc “soltar” a tecla, vai aparecer o que vc quer

Então eu cheguei fazer isso já mais não consegui, tem algum exemplo ai ? vlws

Oh cara, perdão!!! Agora que eu vi a resposta, tava fuçando aqui e encontrei. Desculpa mesmo!

Vamos lá, vc vai clicar no seu combobox com o botão direito, eventos, Key, Key released. Só uma dúvida, vc vai filtrar com o banco de dados?

Tranquilo kk
Então o filtro é pelo banco de dados sim

beleza, então faz assim:

Clica lá com o botão direito no seu ComboBox, Eventos, Key, Key Released, vai abrir a tela de código fonte, aí vc adequa esse código abaixo pra vc:

"SELECT * FROM suaTabela WHERE suaColuna ILIKE '%" + seuComboBox.getSelectedItem() + "%' "

1 curtida

vlw man, vou tentar aqui :wink:

1 curtida

Tentei aqui usando esse código no KeyRelease

try {
            ClienteDAO cdao = new ClienteDAO();

            cdao.filtraCliente(txtCliente.getSelectedItem().toString());

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }

A classe tem esse código

public List filtraCliente(String nome) throws ClassNotFoundException, SQLException {

    List<Cliente> lista = new ArrayList<>();

    String sql = "select * from cliente where nome like ?";
    PreparedStatement stmt = conexao.prepareStatement(sql);
    stmt.setString(1, "%" + nome + "%");

    ResultSet rs = stmt.executeQuery();

    try {

        while (rs.next()) {
            Cliente cl = new Cliente();

            cl.setIdcliente(rs.getInt("idcliente"));
            cl.setNome(rs.getString("nome"));

            lista.add(cl);
        }

    } catch (SQLException ex) {
        javax.swing.JOptionPane.showMessageDialog(null, "Erro ao buscar Cliente !" + ex.getMessage());
    }

e não funcionou, e usei a sua ideia =/

Cara, vc usa o MySQL?

Aqui são aspas simples e depois duplas: ' % " + nome + " % '

Aspas simples são só no Gerenciador de banco de dados, Mais no netbeans é assim mesmo mano que usa esse código.
Se eu coloca aspas simples no código ele não aceita.

Tem certeza? Note que se você fizer assim vai dar erro.

Pra fazer funcionar, precisa das aspas simples, se você colocar as duplas, ele vai “isolar” o parênteses. Tenta do jeito que eu te passei, vai funcionar de boa.

Mas nesse seu caso tenta assim:

Stmt.setString(1, nome);

tentei de todas maneiras ai, e mesmo assim nada =/

Mano do céu, me passa a classe pra eu testar aqui

KeyRelease

private void txtClienteKeyReleased(java.awt.event.KeyEvent evt) {                                       
    try {
        ClienteDAO cdao = new ClienteDAO();

        cdao.filtraCliente(txtCliente.getSelectedItem().toString());

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }


}          

ClienteDAO

public List<Cliente> filtraCliente(String nome) throws ClassNotFoundException, SQLException {

        List<Cliente> lista = new ArrayList<>();

        String sql = "select * from cliente where nome like ?";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setString(1,  nome );

        ResultSet rs = stmt.executeQuery();

        try {

            while (rs.next()) {
                Cliente cl = new Cliente();

                cl.setIdcliente(rs.getInt("idcliente"));
                cl.setNome(rs.getString("nome"));

                lista.add(cl);
            }

        } catch (SQLException ex) {
            javax.swing.JOptionPane.showMessageDialog(null, "Erro ao buscar Cliente !" + ex.getMessage());
        }

        return lista;
    }

}

Fiz isso man, apenas isso o código :slight_smile: vlw pela atenção e ajuda

Vixi mano. Vc quer selecionar um item e quer que apareça os dados dele né?

Se for assim, faz isso (só adequa pra você):

public void ResultadoPesquisa() {
    try {
        conecta.conexao();
        conecta.rs.first();
        camponome.setText(String.valueOf(conecta.rs.getString("modelo")));
        conecta.desconecta();
    } catch (SQLException e) {
    }
}

Eu coloquei isso no jButton:

conecta.conexao();
conecta.executaSQL("select * from morador where nome like '" + comboCliente.getSelectedItem() + "%' order by id");
ResultadoPesquisa();
conecta.desconecta();

na verdade amigo é isso que to querendo fazer, talvez ajude na ideia

2010_3_15_f08d9a58add753fcd53d6b9d716e567b_52549

AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

Cara, então vc quer um jList, olha esse video aqui:

https://www.youtube.com/watch?v=3poWfB2N4Lg é um tutorial sobre

1 curtida

Isso cara isso mesmo!! vlww

vídeo bem explicativo, você sabe se com um combobox é possivel fazer esse procedimento ? pq com combobox nao achei nenhum tutorial nem algo do tipo! obg novamente

Já usei esse como exemplo para uma app no passado, pode lhe ajudar:
http://www.java2s.com/Code/Java/Swing-Components/AutocompleteComboBox.htm

1 curtida