Javafree
Página Inicial do Fórum > GUI - (Applets, Swing, SWT, etc)

JComboBox editavel



Criar novo tópico   Responder tópico


  1. gqferreira
    Posts:12


    Comment Arrow

    Publicado em: 07/06/2009 18:26:41

    Olá pessoal, saudações!

    Para deixar um combobox editavel é moleza, "setEditable(true)", mas e para deixa-lo filtravel? Você começa a digitar e a lista de opções aparece em baixo e vai filtrando, como fazer?
    Links? Tutorias? Idéias?

    Grato.



  1. RicMax
    Posts:861


    Comment Arrow

    Publicado em: 08/06/2009 10:14:38

    Vai precisar de um dicionário...

    O PAAI me disse isso (Google):

    http://www.ansir.ca/autocomplete.jsp
    http://www.codeguru.com/forum/showthread.php?t=34839
    http://www.java.happycodings.com/Java_Swing/code5.html

    Você perguntou para O PAAI antes?
    _________________

    Ricardo Viana



  1. jesuino
    Posts:1964


    Comment Arrow

    Publicado em: 08/06/2009 10:30:50

    Olá
    tenho uma criança aqui que fiz mas tempos! É mas ou menos o que você quer, dê uma olhada no código:

    Acho que é isso, se não for, tomara que ajude alguém.














    Desculpe por colar o código aqui...

    É o seguinte, você digita, ele busca o que digitou e joga numa Combo para mostrar. Para rodar o código você deve ter mySql com um banco de dados chamado teste... uma tabela chamada pessoa e com uma só coluna chamada nome.

    É só um teste, um projeto meu bem antigo!

    Abraços, tomara que ajude você, ou alguém que queira brincar.

    _________________

    William Antônio Siqueira
    Siga-me no Twitter - Tudo sobre JavaFX e um pouco mais
    Aprendendo JavaFX
    Aprendendo JavaEE
    Curta: Aprendendo Java



  1. RicMax
    Posts:861


    Comment Arrow

    Publicado em: 08/06/2009 11:33:48

    Hahaha, isso não é uma "criança" é quase um frankstein!

    Brincadeira, mas é por aí que você segue cara. Só tem que dar uma de cientista maluco e montar teu frank, baseado nesse do jesuino.
    _________________

    Ricardo Viana



  1. gqferreira
    Posts:12


    Comment Arrow

    Publicado em: 16/06/2009 00:16:01

    RickMax, olhei sim no pai google (aff....) mas não encontrei o que precisava. O que chegou mas perto foi esse: http://www.java.happycodings.com/Java_Swing/code5.html mas ainda não era o que eu precisava, nesse exemplo, ha uma filtragem mas sem nunca alterar os valores da lista. Preciso fazer a lista se atualizar e mostrar somente os que começam com as tais letras. Jesuino, achei interessante a sua solução (oO) mas será que não tinha uma solução mais simples? Se não tiver, blz, irei fazer como o seu ou bolar um, fiz esse post pra ver se tem algo "pronto" mas ja tinha um ideia de como faria.

    vlw a todos, vou fazer o meu (tentando alterar o do jesuino) mas se acharem algo "pronto", colar aê ta valendo...



  1. jesuino
    Posts:1964


    Comment Arrow

    Publicado em: 16/06/2009 09:47:18

    Tá, eu pensei que tava difícil de usar esse exemplo mesmo, pois eu coloquei um monte de coisa ae sem sequer falar o que que é.

    Agora que vem a chatice para muitos, mas a parte mais legal de programar em Java(OO na verdade) na minha opinião.

    Visando o uso futuro, em qualquer painel/Frame sem a necessidade de ficar refazendo esse código todo, encapsulei a parte de auto complete para ser usada com qualquer fonte de dados! Para fazer isso levei em conta dois padrões de projeto Builder(monta um componente complexo a partir de partes de construção) e Strategy(encapsula um determinado algoritmo).

    A primeira idéia era fazer um componente reutilizável, pare ser parte de qualquer GUI no futuro(padrão GoF: Builder), então coloquei os componentes em um painél, o segundo passo era permitir qualquer fonte de dados sem conhecer a implementação da mesma, para que eu somente envie uma String e ela me retornasse as sugestões. Então eu usei o padrão Strategy(GoF também) , onde delego a busca de dados para uma interface, quem implementar a interface trazerá os dados que queremos...

    Ou seja, para usar nosso painel, você deverá ter uma classe que implemente a interface IFonteDados, sendo que ela será encarregada de dar as sugestões de acordo com a String passada, retornando num formato de vetor de String. Isso tudo está no código abaixo:



    Agora vamos mostrar como o Strategy está na nossa classe de AutoComplete:


    Simples não??

    Agora veja como ficaria no exemplo anterior, sendo que a minha classe controle implementa a interface IFonteDados:


    E o Control:


    Simples não???

    E se você não quiser mexer nas classes que você tem, basta usar o padrão Adapter para gerar uma classe sem nem mexer no seu projeto que já está pronto!


    Olhe o exemplo no código que eu passei:



    E na tela vamos usar o Control, a fonte de dados, do tipo do Adapter agora:



    Pronto! Simples!!

    Espero que alguém aprenda com isso ae!!

    Qualquer dúvida é só postar...
    _________________

    William Antônio Siqueira
    Siga-me no Twitter - Tudo sobre JavaFX e um pouco mais
    Aprendendo JavaFX
    Aprendendo JavaEE
    Curta: Aprendendo Java



  1. RicMax
    Posts:861


    Comment Arrow

    Publicado em: 16/06/2009 11:45:06

    PQP (com o perdão da expressão)!

    Uma aula-show jesuino!

    Muito bom cara!

    *CTRL C*
    _________________

    Ricardo Viana



  1. Oesly
    Posts:1


    Comment Arrow

    Publicado em: 19/02/2013 15:40:36

    Jesuino, por gentileza mim ajuda mano, como se coloca um textfield em sima de um combobox eu estou usando o Netbeans e não to conseguindo...
    _________________

    Jesus está voltando!



  1. ms27817
    Posts:1052


    Comment Arrow

    Publicado em: 20/02/2013 00:00:59

    [quote="Oesly"]Jesuino, por gentileza mim ajuda mano, como se coloca um textfield em sima de um combobox eu estou usando o Netbeans e não to conseguindo...



    Não é necessário colocar um jTextField, basta setar setEditable(true) no Jcombo:

    http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#editable
    _________________

    Marcelo Senaga
    Papel: Moderador
    Scala Developer

    http://www.devmedia.com.br/senaga

  1. Comment Arrow

    Publicado em: 17/07/2015 11:11:58

    Pessoal, passei muito tempo pesquisando para conseguir fazer a pesquisa dentro de um combobox...

    Depois de muito tempo consegui realizar, estou contribuindo agora para quem desejar.

    Sou iniciante no java, e programo com o netbeans utilizando a modalidade gráfica, então este tutorial não será nem perto de ser profissional, peço para os mais intendidos que melhorem ele por gentileza, mas o mais importante... Funciona.

    Primeiro vou falar sobre o combobox, para que ele funcione utilizei um código adaptado que peguei na net, me desculpem não citar os criadores, pois fui pegando um pedaço aqui, outro ali e não salvei todos os criadores. Então a primeira parte será criar a classe que irá modificar o combobox, para isto basta criar uma classe com o nome AutoCompletion e sobrescrê-la com o código abaixo, não entendo o que acontece aqui, apenas copiei...




    Ok, como falei uso o modo gráfico para fazer meus simples projetos, então não vou postar códigos de geração de JFrames, até mesmo por que eu não escrevo eles, eu desenho todos,
    agora iremos passar apra o nosso combobox, aqui no meu exemplo dei o nome de cmbNome ao meu combobox, vá até o seu Frame que tem o combobox, clique em código-fonte e na chamada do frame crie uma classe para carregar o seu combo box no meu exemplo o frame se chama TesteCombo e o método para carregar o combo se chama carregarNome, após carregar o combo, chame o método AutoCompletion.enable(cmbNome); isso transformará seu combo em editável e vai criar o popup para a busca, permitindo realizar a pesquisa apenas digitando no combo, uma vantagem é que carregamos o combo apenas uma vez e ele faz a pesquisa com estes dados, diferente de alguns códigos que vi que a cada letra digitada tinhamos uma nova pesquisa e um novo carregametno do combobox isso deixa o sistema lento.





    Bem aqui está quase pronto, porém como utilizar a busca?

    vá até a parte gráfica clicando em Projeto clique com o botão direito no seu combobox e escolha Eventos>Action>ActionPerformed






  1. Relacionados