Java KeyListener未检测到按键
我制作了一个游戏,我想在按下p键时暂停游戏。但是,当游戏运行时,Java KeyListener未检测到按键,java,keyboard,keylistener,keyevent,Java,Keyboard,Keylistener,Keyevent,我制作了一个游戏,我想在按下p键时暂停游戏。但是,当游戏运行时,keylister似乎没有检测到按下了P键 我的代码正确吗?我是否已将addKeyListener放置在正确的位置 上面也有类似的问题,但它们似乎都在使用JFrame,而我使用的是。我不确定这是否有区别 主要游戏循环: @Override public void run() { addKeyListener(new MyKeyListener()); displayStartScreen(); displ
keylister
似乎没有检测到按下了P键
我的代码正确吗?我是否已将addKeyListener
放置在正确的位置
上面也有类似的问题,但它们似乎都在使用JFrame
,而我使用的是。我不确定这是否有区别
主要游戏循环:
@Override
public void run() {
addKeyListener(new MyKeyListener());
displayStartScreen();
displayUI();
drawBricks(getWidth() / 2.0, BRICK_Y_OFFSET);
drawPaddle();
while (lives > 0) {
drawBall();
playGame(); // additional game loop
if (brickCounter == 0) {
removeAll(); // removes all game objects
displayUI();
drawBricks(getWidth() / 2.0, BRICK_Y_OFFSET);
drawPaddle();
brickCounter = 100;
}
}
}
if (brickCounter > 0) {
removeAll();
printGameOver();
}
}
private void playGame() {
getBallVelocity();
while (true) {
moveBall();
updateUI();
if (ball.getY() >= getHeight()) {
lives--;
break;
}
if (brickCounter == 0) {
break;
}
}
}
附加游戏循环:
@Override
public void run() {
addKeyListener(new MyKeyListener());
displayStartScreen();
displayUI();
drawBricks(getWidth() / 2.0, BRICK_Y_OFFSET);
drawPaddle();
while (lives > 0) {
drawBall();
playGame(); // additional game loop
if (brickCounter == 0) {
removeAll(); // removes all game objects
displayUI();
drawBricks(getWidth() / 2.0, BRICK_Y_OFFSET);
drawPaddle();
brickCounter = 100;
}
}
}
if (brickCounter > 0) {
removeAll();
printGameOver();
}
}
private void playGame() {
getBallVelocity();
while (true) {
moveBall();
updateUI();
if (ball.getY() >= getHeight()) {
lives--;
break;
}
if (brickCounter == 0) {
break;
}
}
}
KeyListener类:
private class MyKeyListener implements KeyListener {
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_P) {
System.out.println("Key 'P' has been pressed!"); // test
}
}
@Override
public void keyReleased(KeyEvent e) { /* Empty body */ }
@Override
public void keyTyped(KeyEvent e) { /* Empty body */ }
}
解决了这个问题。代码
addKeyListener(new MyKeyListener());
是不正确的,应该是
addKeyListeners(new MyKeyListener());
你的代码看起来不错。acm.grachics(无论是什么)是否接受按键?它需要专注吗?您是否尝试过使用JFrame检查代码?addKeyListener是您的库提供的方法吗?您是否将侦听器分配给了正确的组件?@SteveSmith抱歉,这是一个输入错误,我已编辑了该问题。是一个图形模块,我用它在屏幕上画游戏对象。我不知道你所说的专注是什么意思;游戏只使用鼠标来控制一个“桨”,键盘从来没有使用过(所以我猜没有焦点?)。这就是我想通过添加keylistener@ItFreak是的,但是我拼写错误,IDE没有发现这个