gpt4 book ai didi

java - 如何覆盖按键重复 - KeyListener

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:34 25 4
gpt4 key购买 nike

我有一个包含 KeyListener 的图形项目,其中箭头键和空格键控制宇宙飞船的移动。但是,当按住某个键时,它会在第一个按键延迟一段时间后记录下一个按键。我想要一个按住的键来连续注册。

我怀疑这是由于我的计算机的按键重复延迟设置造成的,因此有什么方法可以在我的程序中临时覆盖此设置,或者解决方法吗?

public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 38) { //Up Arrow
currentLevel.moveSpiffUp();
} else if (e.getKeyCode() == 40) { //Down Arrow
currentLevel.moveSpiffDown();
} else if (e.getKeyCode() == 32 && !currentLevel.getFrapRayActive()) {
currentLevel.shoot();
}
repaint();
}

最佳答案

我建议使用按键和释放键

public class MyKeyListener implements KeyListener {
//class gets the input from the player
public void keyTyped(KeyEvent e) {
}

@Override
public void keyPressed(KeyEvent e) {
if(KeyEvent.getKeyText(e.getKeyCode()).equals("Left")) {
//left arrow key
} else if (KeyEvent.getKeyText(e.getKeyCode()).equals("Right")) {
//right arrow key
}
}
public void keyReleased(KeyEvent e) {
if(KeyEvent.getKeyText(e.getKeyCode()).equals("Left"){
//left key released
}
if(KeyEvent.getKeyText(e.getKeyCode()).equals("Right")) {
//right key released
}

}
}

然后我在我的主构造函数中使用了这段代码

    main() {
KeyListener listener = new MyKeyListener();
addKeyListener(listener);
setFocusable(true);
}

这样您在击键时就不会出现延迟。

关于java - 如何覆盖按键重复 - KeyListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com