Preciso de um combo editavel que a cada caractere digitado o programa receba esse valor e armazene-o em uma variavel.
Não estou conseguindo utilizar o evento KeyReleased() no combobox.
Consegui fazer com Jtextfield mas no meu caso tem que ser combobox mesmo.
Por favor me ajudem.
Problema com combobox
13 Respostas
Oi. Seja bem-vindo ao GUJ.
Por favor, não crie tópicos com letras maiúsculas. Na internet, geralmente usamos maiúsculas para representar um grito. 
Tenho uma dúvida, por que você precisa fazer isso letra-a-letra?
Desculpe , nao foi de proposito não!
Digitei o titulo do topico por ultimo e a tecla caps loock estava ativada.
Não tinha reparado por que digitei ás pressas.
Mas o conteudo ainda é valido !
Se puderem ajudar eu fico grato!!! 
Oi. Seja bem-vindo ao GUJ.
Por favor, não crie tópicos com letras maiúsculas. Na internet, geralmente usamos maiúsculas para representar um grito.![]()
Tenho uma dúvida, por que você precisa fazer isso letra-a-letra?
Ao que me parece ele deve estar tentando fazer um auto-sugest. Seria isso tarsis ?
tarsis, vc não está conseguindo utilizar o keyReleased() pq vc está adicionando o keyListener ao combo, mas não é no combo que vc tem que adicioná-lo.
Qdo vc está usando um combo “editável”, vc na verdade está editando um componente que está dentro do seu combo.
Faça assim:
((JTextField)seuCombo.getEditor().getEditorComponent()).addKeyListener(seuListener);
Agora programe o que deseja nos métodos do seu keyListener e pronto, ele vai funcionar. 
Se você quer fazer um AutoComplete, eu sugiro que dê uma pesquisada na classe AutoCompleteDecorator do SwingX. Ela já faz isso para você e funciona tanto para combox editáveis quanto não editáveis. Poupa muito trabalho…
Dá uma olhada no site dos caras: http://swinglabs.org/
Eu acho que é isso mesmo Renata,mas como ficaria o codigo completo?
So pra exemplificar ,pode ser assim:
a cada caractere digitado o programa va mostrando num textField o que estiver contido no combobox.
so pra testar o evento!!
Primeiro crie seus dois objetos, o Combo e o TextField:
javax.swing.JComboBox jComboBox1 = new javax.swing.JComboBox();
javax.swing.JTextField jTextField1 = new javax.swing.JTextField();
jComboBox1.setEditable(true);
((JTextField)jComboBox1.getEditor().getEditorComponent()).addKeyListener(listener); // adicionei o listener
jTextField1.setText("");
Depois, na classe listener que vc criar (KeyListener), vc programa o método abaixo:
public void keyReleased(KeyEvent arg0) {
jTextField1.setText(((JTextField)jComboBox1.getEditor().getEditorComponent()).getText());
}
estou utilizando o netbeans , e ainda nao sei criar os componentes diretamente em codigo.
Eu adiciono os componentes pela aba swing arrastando e soltando e o netBeans gera o codigo de criação do componente escolhido.
Justamente esse código onde deveria adicionar o
jComboBox1.setEditable(true);
// ond deveria adicionar o codigo abaixo fica bloqueado
((JTextField)jComboBox1.getEditor().getEditorComponent()).addKeyListener(listener);
é bloqueado pelo netBeans para nao serem feitas alteraçoes.
afhh Consegui fazer o evento funcionar, tive que ir na pasta src ond ficam os fontes .
Quanto ao evento ja ta tudo ok.
porem ainda não consegui armazenar o que foi digitado em uma variavel.
Esta dando o seguinte erro :
incompatible types
found : javax.swing.JTextField
Required : java.lang.String
Abaixo o codigo:
String m = ((JTextField)jComboBox1.getEditor().getEditorComponent()).getText();
System.out.println(m);
obs:: o objetivo de armazenar numa variavel é pq usarei p fazer consultas ao banco::
mas isso nao precisa ser colocado no exemplo.
Amigo, tem certeza de que o erro é esse?
Não está fazendo muito sentido, afinal, o getText() de um JTextField retorna uma String. Não compreendo pq ele está dando essa msg se seu código estiver igual ao que postou.
eu consegui da seguinte forma:
String m = (string) jComboBox1.getEditor().getItem();
System.out.println(m);
Dei uma pesquisada sobre o swingX e acho que era mais ou menos isso que estava precisando um autocomplete!!
Mas ainda tenho que baixar a biblioteca e ver como implementar isso.
valew pela ajuda.
Provavelmente voltarei a postar neste topico . Em caso de duvida sobre o assunto!
Thanks!!
Bom, se o comboBox estiver com setEditable(true); a melhor forma, pelo q eu acho seria:
jComboBox1.getEditor().getEditorComponent().addKeyListener
(
new KeyListener()
{
public void keyTyped(KeyEvent keyEvent) {}
public void keyPressed(KeyEvent keyEvent) {}
public void keyReleased(KeyEvent keyEvent) {
jComboBox1.getEditor().setItem
(jComboBox1.getEditor().getItem().toString().toUpperCase());
}
}
);
Nesse meu caso, estou fazendo com que tudo que seja digitado, fique com caixa alta(Tudas letras Maiusculas).
- uma forma diferente de agregar os enventos de Keys no componente de Ediçao do ComboBox…
T mais!