在Java中,你不检查是否有键被按下,而不是你听到
KeyEvent秒。实现目标的正确方法是注册一个
KeyEventDispatcher,并实现它以维持所需密钥的状态:
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; } } }); }}
然后,您可以随时使用:
if (IsKeyPressed.isWPressed()) { // do your thing.}
当然,您可以使用相同的方法来实现
isPressing("<some key>")键映射及其包裹在状态中的状态
IsKeyPressed。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)