我正在尝试为我的班级制作Pong游戏,但我的KeyListener不会触发其各自的方法。我看过variousquestions,但其解决方案对我没有任何好处。KeyListener不会执行其侦听
我有一个扩展JPanel
类,并在它的构造,我有以下几种方法:
public final class GamePanel
extends javax.swing.JPanel
implements ActionListener, KeyListener {
public GamePanel(MainWindow Parent, WelcomePanel Sister) {
parent = Parent;
sister = Sister;
ball = new Ball(this);
Player1 = new Paddle(this, "left", "user");
Player2 = new Paddle(this, "right", "user");
setVisible(true);
Timer t = new Timer(60, this);
t.start();
addKeyListener(this);
this.requestFocusInWindow();
setFocusable(true);
}
public void keyPressed(KeyEvent event) {
Player1.keyPressedEvent(event) // Get's KeyCode, puts it in a switch and moves
// the increment of the paddle accordingly.
Player1.keyPressedEvent(KeyEvent event)
:
public void keyPressedAction(KeyEvent event) {
int code = event.getKeyCode();
if (this.side.equals("left")) {
switch (code) {
case KeyEvent.VK_UP:
this.yIncrement = 10;
break;
case KeyEvent.VK_DOWN:
this.yIncrement = -10;
break;
case KeyEvent.VK_LEFT:
this.xIncrement = -10;
break;
case KeyEvent.VK_RIGHT:
this.xIncrement = 10;
break;
}
}
else if (this.side.equals("right")) {
switch (code) {
case KeyEvent.VK_W:
this.yIncrement = 10;
break;
case KeyEvent.VK_S:
this.yIncrement = -10;
break;
case KeyEvent.VK_A:
this.xIncrement = -10;
break;
case KeyEvent.VK_D:
this.xIncrement = 10;
break;
}
}
}
可以为发生故障的原因是与一些干扰ActionListener
?我对Java很陌生,但是看过我的一些朋友的代码,在那里使用它并没有任何问题。问题是桨叶根本不动。
如果您调试过,并且看到该方法是否真的没有被调用?也许你的移动逻辑是错误的。 –
我已经为增量(25)设置了初始值,但如果这被认为是调试,那么按下按键实际上不会做任何事情。 :) – Zizouz212
我已经在eclipse中切换了断点,但似乎没有进入关键的侦听器方法。行动执行方法被解雇,但没有关键的方法。你知道如何手动触发KeyEvent吗?我会看看它是否也如此燃烧。 – Zizouz212