Java 在同一类中具有timerlistener的Keylistener。
这是我第一次尝试在Java中使用keylistener,所以不要对我苛刻。我试图在同一个单独的私人班级中使用TimerListener和KeyListener来补充我的上层班级的主要活动Java 在同一类中具有timerlistener的Keylistener。,java,awt,controls,keylistener,event-driven,Java,Awt,Controls,Keylistener,Event Driven,这是我第一次尝试在Java中使用keylistener,所以不要对我苛刻。我试图在同一个单独的私人班级中使用TimerListener和KeyListener来补充我的上层班级的主要活动 public class GameMemory { private int[][] grid = new int[24][12]; Figure figure = new Figure(); GameMemory() { figure.figureReinitia
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类都应该试着专注于做一件事并把它做好。要想更快地获得更好的帮助,请发布一条消息。你不需要在
计时器
中添加键侦听器
,计时器
,不要对键做任何事情。您需要将它添加到生成关键事件的任何输入管理器/对象/任何对象中。这是另一个不将两个接口合并到一个对象中的好理由-这将使类似的事情变得显而易见。