Presionar tecla intro y que eschuche el boton aceptar

Presionar un jButton con la tecla Enter

Por lo general en los sistemas de gestión es requisito fundamental que todas(o la gran mayoría) de las acciones sean posibles a través del teclado.

Ahora bién, uno podría pensar que el problema ya esta solucionado por netbeans, ya que este me permite por defecto accionar un botón presionando la tecla Espacio cuando éste se encuentra en foco. Pero si hacemos un estudio del comportamiento de los usuarios frente a una aplicación del tipo gestión se puede observar que para ellos es natural aceptar una acción mediante la tecla Enter y no Espacio.
Para solucionar este problema podemos seguir cualquiera de las siguientes métdos:

1ºMétodo: definir un nuevo InputMap
Para definir un nuevo inputMap lo primero que tenemos que hacer es importar la librerias necesarias:

import java.awt.event.KeyEvent;
import javax.swing.InputMap;
import javax.swing.KeyStroke;

Ahora supongamos que queremos que el botón btnAceptar se presione con la tecla Enter cuando esté en foco, entonces hacemos lo siguiente:

InputMap map = new InputMap();

map.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), "pressed");
map.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true), "released");

btnAceptar.setInputMap(0, map);

2ºMétodo:agregar un escuchador de teclas
Primero, importamos las librerías necesarias:

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

Segundo, definimos una subclase dentro de la clase principal que herede de keyAdapter y que al detectar que se presionó la tecla Enter haga lo mismo que hace el botón btnAceptar cuando se hace click en el mismo. Para ello hacemos lo siguiente:

public class PresionarTecla extends KeyAdapter {

      public void keyPressed(KeyEvent ke) {
          if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
              btnAceptarActionPerformed(null);
          }
      }
}

Tercero y último, agregamos un escuchador de teclas al botón en cuestión(btnAceptar para el ejemplo).
Observación: lo siguiente lo hacemos en el constructor de la clase principal.

btnGestionPacientes.addKeyListener(new PresionarTecla());

6 comentarios en “Presionar tecla intro y que eschuche el boton aceptar”

  1. Amigo saludos estoy programando para un proyecto en java aplication con netbeans que debo entregar y estoy creando detalles como el que comentas, ya que es totalmente cierto la acción de la tecla enter cuando queremos aceptar o ingresar en cualquier pagina o programa. mas sin embargo viendo tu explicación no logro hacer que capture el evento sin estar focusable el botón aceptar. quiero que sea posible sin necesidad de estar enfocado el boton. Espero tu ayuda por favor

  2. Hola Sandy, fijate si este video te ayuda con lo que nesitas. Aca de dejo el códgio que utilizan
    //Se asegura de capturar la tecla enter y descartar todas las demas
    char cTeclaPresionada = evt.getKeyChar();

    //Da click al boton elegido
    if(cTeclaPresionada==KeyEvent.VK_ENTER){
    btnBoton.doClick();
    }
    La url del video es https://www.youtube.com/watch?v=hvnBKuFiNAg

  3. Hola amigo estoy haciendo una calculadora en java ya la tengo casi lista hace las operaciones y todo pero el problema es que estoy buscando como con el teclado numérico valide que al pulsar el boton 1 (teclado físico) en la «txtcaja de texto» salga el numero que pulse asi como la calculadora de windows
    el lo «txtcaja de texto» tengo en no editable asi como en la calculadora de windows sin el punto de inserción palpitado te lo agradecería si me ayudaras

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.