Adicionar Keylistener em um JComboBox

Fala…

Bom faz um dia e meio que eu quero adicionar um keylistener em um JComboBox mas ele não ouve nada!!! :cry:

Alguém ja conseguiu fazer isso funcionar?

Mostre como vc está implementando

[code]…
nomeJComboBox.addKeyListener(
new KeyAdapter()
{

				public void keyPressed(KeyEvent e){
					System.out.println("a");
				}

			}

…[/code]

teuComboBox.addKeyListener(new KeyListener() {
			
				public void keyReleased(KeyEvent arg0) {
					// TODO Auto-generated method stub
			
				}
			
				public void keyPressed(KeyEvent arg0) {
					JOptionPane.showMessageDialog(null,"Apertou um tecla do teclado");
			
				}
			
				public void keyTyped(KeyEvent arg0) {
					System.out.println(arg0.getKeyChar());
			
				}
			
			});

Cara, o q tu queres fazer exatamente? pq no q tu mostraste qdo o foco estiver no combox e uma tecla for acionada, ele vai mostrar uma mensagem. que tipo de evento tu queres?

[quote=klarq]Fala…

Bom faz um dia e meio que eu quero adicionar um keylistener em um JComboBox mas ele não ouve nada!!! :cry:

Alguém ja conseguiu fazer isso funcionar?[/quote]

Tente fazer o seguinte:

seuCombo.setEditable(false);

:stuck_out_tongue:

A Paz!!

[quote]teuComboBox.addKeyListener(new KeyListener() {

			public void keyReleased(KeyEvent arg0) {
				// TODO Auto-generated method stub
		
			}
		
			public void keyPressed(KeyEvent arg0) {
				JOptionPane.showMessageDialog(null,"Apertou um tecla do teclado");
		
			}
		
			public void keyTyped(KeyEvent arg0) {
				System.out.println(arg0.getKeyChar());
		
			}
		
		});[/quote]

Isso não funciona…

Ele não pega o evento!!!

Eu quero que o usuário digite uma palavra e que quando ele abrir o combo venha do banco os nomes que começam com a palavra digitada…

e eu quero fazer isso enquanto ele digita a palavra… … mas o combo não “ouve” nada!!

Deixa eu contar uma novidade…

Se eu fizer combo.setEditable(false) o keylistener funciona!!!

Meu Deus… :shock:

http://www.orbital-computer.de/JComboBox/

Naum seria melhor trabalhar com Modelo (DefaultComboBoxModel)? Ao invés de você fazer esta filtragem na SQL vc armazenaria todos os registros em uma Collection no modelo, e toda vez que digitasse algo no combo ele filtraria apenas na aplicaçao, sem precisar ir ao banco sempre.

[quote]Naum seria melhor trabalhar com Modelo (DefaultComboBoxModel)? Ao invés de você fazer esta filtragem na SQL vc armazenaria todos os registros em uma Collection no modelo, e toda vez que digitasse algo no combo ele filtraria apenas na aplicaçao, sem precisar ir ao banco sempre[/quote].

Tudo bem… … mas como pegar o evento do teclado!!!

ja tentei isso mas como implementar o JTextComponent em um JFrame e não em um PlainDocument

[quote=klarq]Deixa eu contar uma novidade…

Se eu fizer combo.setEditable(false) o keylistener funciona!!!

Meu Deus… :shock: [/quote]

Seguinte, eu mudei meu post lá em cima… é isso mesmo vc tem que setar para false.

Para vc interceptar agora vc terá que adicionar um Editor ao seu combo…

A Paz!!

// isso vc coloca na gui
JComboBox comboBox = new JComboBox(new Object[] {"Ester", "Jordi", "Jordina", "Jorge", "Sergi"}); //eu recomendo criar um modelo q extenda de DefaultComboBoxModel, nele vc conecta com obanco uma vez e adiciona os itens do combobox
        
        comboBox.setEditable(true);
        // get the combo boxes editor component
        JTextComponent editor = (JTextComponent) comboBox.getEditor().getEditorComponent();
        // change the editor's document
        editor.setDocument(new S02BrokenAutoSelection(comboBox.getModel()));// esta classe está disponível em: http://www.orbital-computer.de/JComboBox/source/S02BrokenAutoSelection.java

É só vc importar essa a classe S02BrokenAutoSelection para o seu projeto, eu testei aki e funcionou.

Mais uma coisa, qdo for criar um post, tente dar o máximo de informação no início, pra ficar essa sequ~encia de posts desnecessárias.

Qualquer duvida pode perguntar.

[quote=cecaldas][code]
// isso vc coloca na gui
JComboBox comboBox = new JComboBox(new Object[] {“Ester”, “Jordi”, “Jordina”, “Jorge”, “Sergi”}); //eu recomendo criar um modelo q extenda de DefaultComboBoxModel, nele vc conecta com obanco uma vez e adiciona os itens do combobox

    comboBox.setEditable(true);
    // get the combo boxes editor component
    JTextComponent editor = (JTextComponent) comboBox.getEditor().getEditorComponent();
    // change the editor's document
    editor.setDocument(new S02BrokenAutoSelection(comboBox.getModel()));// esta classe está disponível em: http://www.orbital-computer.de/JComboBox/source/S02BrokenAutoSelection.java

[/code]

É só vc importar essa a classe S02BrokenAutoSelection para o seu projeto, eu testei aki e funcionou.

Mais uma coisa, qdo for criar um post, tente dar o máximo de informação no início, pra ficar essa sequ~encia de posts desnecessárias.

Qualquer duvida pode perguntar.[/quote]

Pronto, agora é só fazer isso:

comboBox.setEditable(true);
JTextComponent editor = (JTextComponent)jComboBox1.getEditor().getEditorComponent();        
        editor.addKeyListener(new KeyListener() {
            public void keyReleased(KeyEvent arg0) {            

            }

            public void keyPressed(KeyEvent arg0) {
            JOptionPane.showMessageDialog(null,"Apertou um tecla do teclado");

            }

            public void keyTyped(KeyEvent arg0) {
                System.out.println(arg0.getKeyChar());
            }
        });

Eita moçada boa :stuck_out_tongue:

Valew mesmo galeria…

estou tendo o mesmo problema q o klarq :frowning:
mas a classe que resolveria o problema S02BrokenAutoSelection não está mais no link passado

solução alternativa ou link alternativo?