Criando um JList com filtro no Java Swing

Olá. Nesse tutorial vou mostrar como colocar um filtro em um componente JList.

Esse filtro é bem útil quando a lista possui muitos elementos e dificulta a vida do usuário em ter que ficar descendo ou subindo a lista para encontrar determinado elemento.

Nesse exemplo utilizei um JFrame. Ele conterá um JList com as opções e um JTextField para o usuário digitar o que deseja procurar na lista. Veja a figura a seguir como está o JFrame.

 
 

Criar um filtro em um JList é necessário dois modelos de JList e um contador para sabermos quantas letras o usuário digitou. O primeiro modelo contém os elementos ordenados do JList, o segundo modelo contém os elementos filtrados de acordo com o texto digitado pelo usuário.

Veja na figura a seguir como criar os modelos de JList, o contador e adicionar os elementos.




Agora iremos adicionar dois eventos ao JTextField. Quando o usuário digitar algo no JTextfield usaremos o evento KeyPressed para coletar a quantidade de letras que foram digitadas. Quando o usuário parar de digitar, o evento KeyReleased vai verificar se o contéudo do JTextField está vazio, se não estiver vazio vai disparar o método FilterList.

Veja na figura a seguir os métodos KeyPressed e KeyReleased do JTextField.


 
Na figura 4 contém o método FilterList que é responsável por percorrer o JList em busca dos elementos que contém as letras digitadas pelo o usuário. Veja a seguir.



Agora basta chamar o método AdicionarElementos no método construtor do JFrame e executar o projeto. Como utilizei o Netbeans para criar o projeto, o método initComponents é criado automaticamente não foi feita nenhuma alteração neste método.
Veja a figura 5 o método construtor.
Na figura 6, o nosso JFrame com os elementos sendo filtrados.



O projeto está hospedado no servidor Mega, clique aqui para baixá-lo. Qualquer dúvida sobre a implementação do filtro faça um comentário.


Até mais.
Compartilhe no Google Plus

About Tiago Sousa

Desenvolvedor/professor com foco em Java. Bacharel em Sistemas de Informação pela Universidade de Franca (Unifran) e Pós Graduado em DW Java pela Universidade de Araraquara (Uniara). Está no mercado de TI há 12 anos, possui conhecimentos gerais em diversas tecnologias.