这是我第一次尝试在Java中使用keylistener,所以不要对我很苛刻。我试图在同一个单独的私有类中使用TimerListener和KeyListener来补充我上层的主要活动。
public class GameMemory {
private int[][] grid = new int[24][12];
Figure figure = new Figure();
GameMemory() {
figure.figureReinitialize();
Timer timer = new Timer(1000, new TimerListener());
timer.start();
}
私人班级
private class TimerListener implements ActionListener, KeyListener {
@Override
public void actionPerformed(ActionEvent e) {
figure.moveDown();
System.out.println(Arrays.deepToString(grid)); // To debug.
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT)
GameMemory.this.figure.rotateRight();
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
}
我做了大量研究,观看了几个在线视频并阅读了有关该主题的oracle文档,但仍然无法理解它。在当前状态下,代码编译,并且计时器按预期运行,但我想我在某个地方错过了一个声明......
我在GameMemory构造函数中尝试了addKeyListener,但它说它找不到符号。
有什么想法吗?
答案 0 :(得分:0)
如果正在调用计时器但键不是,则很可能您没有将侦听器添加为KeyListener。这非常类似于你的代码中发生的事情,因为你在它上面放了一个计时器但是却没有做任何事情。
一般情况下,最好将它们分开来进行分割。每个Java类都应该尝试专注于做一件事并做好。