Adicionar Keylistener em um JComboBox

14 respostas
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?

14 Respostas

C

Mostre como vc está implementando

klarq
...
nomeJComboBox.addKeyListener(
				new KeyAdapter()
				{
					
					public void keyPressed(KeyEvent e){
						System.out.println("a");
					}

				}
...
C
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?

paulohbmetal

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?

Tente fazer o seguinte:

seuCombo.setEditable(false);

:stuck_out_tongue:

A Paz!!

klarq

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());
		
			}
		
		});</blockquote>

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!!

klarq

Deixa eu contar uma novidade…

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

Meu Deus… :shock:

C

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

V

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.

klarq

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
.

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

paulohbmetal

klarq:
Deixa eu contar uma novidade…

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

Meu Deus… :shock:

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!!

C
// 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.

paulohbmetal
cecaldas:
// 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.

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());
            }
        });
klarq

Eita moçada boa :stuck_out_tongue:

Valew mesmo galeria…

S

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?

Criado 9 de junho de 2005
Ultima resposta 4 de fev. de 2009
Respostas 14
Participantes 5