teclado tecla sirve que para keypressed getkeychar eventos evento con activar java input key

tecla - keypressed java netbeans



¿Cómo puedo verificar si el usuario está presionando una tecla? (3)

KeyListener implementar KeyListener , eche un vistazo aquí: http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyListener.html

Más detalles sobre cómo usarlo: http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

En Java tengo un programa que necesita verificar continuamente si un usuario está presionando una tecla. Entonces en psuedocode, algo así como

if (isPressing("w")) { //do somthing }

¡Gracias por adelantado!


Espero que funcione:

import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.JTextField; public class Main { public static void main(String[] argv) throws Exception { JTextField textField = new JTextField(); textField.addKeyListener(new Keychecker()); JFrame jframe = new JFrame(); jframe.add(textField); jframe.setSize(400, 350); jframe.setVisible(true); } } class Keychecker extends KeyAdapter { @Override public void keyPressed(KeyEvent event) { char ch = event.getKeyChar(); System.out.println(event.getKeyChar()); } } }


En java no se comprueba si se pulsa una tecla, sino que se escucha KeyEvent s. La forma correcta de lograr su objetivo es registrar un KeyEventDispatcher e implementarlo para mantener el estado de la clave deseada:

import java.awt.KeyEventDispatcher; import java.awt.KeyboardFocusManager; import java.awt.event.KeyEvent; public class IsKeyPressed { private static volatile boolean wPressed = false; public static boolean isWPressed() { synchronized (IsKeyPressed.class) { return wPressed; } } public static void main(String[] args) { KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() { @Override public boolean dispatchKeyEvent(KeyEvent ke) { synchronized (IsKeyPressed.class) { switch (ke.getID()) { case KeyEvent.KEY_PRESSED: if (ke.getKeyCode() == KeyEvent.VK_W) { wPressed = true; } break; case KeyEvent.KEY_RELEASED: if (ke.getKeyCode() == KeyEvent.VK_W) { wPressed = false; } break; } return false; } } }); } }

Entonces siempre puedes usar:

if (IsKeyPressed.isWPressed()) { // do your thing. }

Por supuesto, puede usar el mismo método para implementar isPressing("<some key>") con un mapa de claves y su estado dentro de IsKeyPressed .