Filtro em combobox java

19 respostas
java
V

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

19 Respostas

rodriguesabner

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

V

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

rodriguesabner

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?

V

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

rodriguesabner

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() + "%' "

V

vlw man, vou tentar aqui :wink:

V

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 =/

rodriguesabner

Cara, vc usa o MySQL?

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

V

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.

rodriguesabner

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

V

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

rodriguesabner

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

V

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

rodriguesabner

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

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

2010_3_15_f08d9a58add753fcd53d6b9d716e567b_52549

rodriguesabner

AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

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

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

V

Isso cara isso mesmo!! vlww

V

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

Ironlynx

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

Criado 19 de maio de 2018
Ultima resposta 26 de jun. de 2018
Respostas 19
Participantes 3