这是我第一次尝试在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,但它说找不到符号。
有什么想法吗?
如果正在调用计时器,但键没有,那么很可能您还没有将侦听器添加为KeyListener。这看起来很像你的代码中正在发生的事情,因为你在它上面放了一个计时器,然后什么都不做
不过,总的来说,最好还是把它们分开。每个Java类都应该尝试并专注于做一件事并把它做好。