Capturar tecla ENTER no JTextField

6 respostas
T

Salve pessoal,

estou desenvolvendo um chatzinho aqui pra faculdade e precisava que quando o usuário digitasse o texto na JTextArea texto ele reconheça como se tivesse clicado no JButton de enviar a mensagem, não tenho muita experiência em java, então se alguém puder me ajudar. Estou usando o Eclipse como IDE.

Att

6 Respostas

A

Ae Thiago,

Tente algo do tipo:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class testENTER extends Applet{
  TextField t;
  public void init(){
    TextField t = new TextField("press ENTER");
    add(t);
    t.addKeyListener
      (new KeyAdapter() {
         public void keyPressed(KeyEvent e) {
           int key = e.getKeyCode();
           if (key == KeyEvent.VK_ENTER) {
              Toolkit.getDefaultToolkit().beep();   
              System.out.println("ENTER pressed");
              }
           }
         }
      );
    }
}

Fonte: http://www.rgagnon.com/javadetails/java-0253.html

A

Ah, outro exemplo no mesmo link é:

public class testENTER extends Applet
    implements KeyListener {
  TextField t;
  public void init(){
    TextField t = new TextField("press ENTER");
    add(t);
    t.addKeyListener(this);
    }
   public void keyTyped(KeyEvent e) {}
   public void keyReleased(KeyEvent e) {}
   public void keyPressed(KeyEvent e) {
     int key = e.getKeyCode();
     if (key == KeyEvent.VK_ENTER) {
        Toolkit.getDefaultToolkit().beep(); 
        System.out.println("ENTER pressed");
        }
     }
}

Forte abraço!

T

Opa,

vou tentar aqui, valeu, depois posto o resultado!

Att

T

Consegui amigo, meu código ficou assim.

txtMessage = new JTextField();
		txtMessage.setBounds(new Rectangle(30, 45, 230, 25));
		txtMessage.addKeyListener(new KeyAdapter() {
				public void keyPressed(KeyEvent e) {
					int key = e.getKeyCode();
					if (key == KeyEvent.VK_ENTER) { 
						Toolkit.getDefaultToolkit().beep();
						if (txtMessage.getText() != "") {
							sendMessage(txtMessage.getText());
						}
					}
				}
		});
		content.add(txtMessage, null);

Valeu a ajuda!
Att

V

No caso específico de ativar um botão (como o de enviar) caso o enter seja pressionado, é ainda mais fácil.

Você pode dar o comando:

Assim, quando o enter for pressionado, esse botão será automaticamente acionado.

Se precisar de ações mais sofisticadas, a maneira correta de se fazer é essa, indicada pelo Thingol:
http://www.guj.com.br/java/92862-tecla-enter-no-jtextfield-#497162

Eventos em 99,9% das vezes não são a solução correta.

T

Valeu a dica ViniGodoy.

Além de ser mais simples a implementação.

Att

Criado 4 de maio de 2012
Ultima resposta 4 de mai. de 2012
Respostas 6
Participantes 3