Presionar un jButton con la tecla Enter
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());
Gracias!
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
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
muchas gracas , se te agradece por comentar en el foro
Muchisimas gracias Admin por fin… Mil gracias me sirvio bastante.
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