JText + KeyListener

5 respostas
S

Pessoal boa tarde,
eu tenho um jtext e toda hora que é pressionado um enter
com focus nele eu quero que chame um metodo.
eu nao conheco direito KeyListener.
Gostaria de uma ajuda, se voces puderem me explicar como faço e me passar algum link que tenha
a explicação do funcionamento do KeyListenner eu ficaria grato.
obrigado.

5 Respostas

P

ola,
voce quer um evento para o textfield neh?
é so fazer o seguinte

seuTextField.addKeyListener(new KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent e) { if (e.getKeyCode()==KeyEvent.VK_ENTER) //o metodo que voce quer chamar }; });

S

Isso,
eu fiz assim no meu construtor:

ActionCodigoBarras ac = new ActionCodigoBarras();
        txtTeste.addKeyListener(ac);

e criei um KeyListenner

class ActionCodigoBarras implements KeyListener{

     public void keyPressed(KeyEvent e){
   if(e.getKeyChar() == KeyEvent.VK_ENTER){ //Se a tecla pressionada for igual a '\n'
            JOptionPane.showMessageDialog(null, "Pressionou Enter");
    }
   }

   public void keyReleased(KeyEvent e){
     // código aqui
   }

   public void keyTyped(KeyEvent e){
     // código aqui
   }
}

Ai funfou beleza, só que to com outro problema agora, tipo
eu quero que o cara digite no meu jtext e quando ele der um enter
o meu programa valide esse codigo e retorne dados na tela.
eu consegui ate capturar o enter. so que nao entendo como vou pegar
esse valor que ele digitou sendo que estou em outra classe e acessar meu banco
e retornar nos outros campo da tela os valores.

P

é que tipo daquele jeito que eu postei antes tu escreve no txtfield e aperta enter para chamar o evento.
o que tu quer fazer é uma pesquisa no banco neh?

fica mais ou menos assim
t1.addKeyListener(new KeyAdapter() {
			public void keyPressed(java.awt.event.KeyEvent e) {
				if (e.getKeyCode()==KeyEvent.VK_ENTER)
					try{
						//selecionar o campo atividade tmbm e retornar os valores nos botoes
						resultado=comando.executeQuery("select nome,cpf,num_carne from aluno where Id='"+t1.getText()+"'");
						if(resultado.next())
						{
							String r=resultado.getObject(1).toString();			
							String r1=resultado.getObject(2).toString();
							String r2=resultado.getObject(3).toString();

							t0.setText(r);t2.setText(r1);t3.setText(r2);

						}
					}
				catch(Exception g)
				{
					JOptionPane.showMessageDialog(null, "Erro ao pesquisar.\nPor favor verifique!");
					g.printStackTrace();
				}

			};
		});
neste metodo tu escreve no txt clica enter e faz uma pesquisa no banco que retorna os dados em outros txtfields :) era isso?
S

Isso mesmo.
funcionou aqui.
Muito Obrigado.

ViniGodoy

Se você quiser que ele dispare o evento de um botão padrão, nem precisa do keylistener. Basta no construtor da sua janela fazer:

Isso fará com que o botão ok seja disparado pelo enter, em qualquer JTextField que vc esteja na janela.

DICA: KeyListener é geralmente o caminho errado de resolver problemas com o JTextField.

Criado 13 de abril de 2011
Ultima resposta 15 de abr. de 2011
Respostas 5
Participantes 3