gpt4 book ai didi

java - Keylistener 与timerlistener 在同一类内。

转载 作者:太空宇宙 更新时间:2023-11-04 15:19:16 27 4
gpt4 key购买 nike

这是我第一次尝试在 Java 中使用 keylistener,所以不要对我太苛刻。我试图在同一个单独的私有(private)类中使用 TimerListener 和 KeyListener 来补充我上层类的主要 Activity 。

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)

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类都应该尝试并专注于做一件事并把它做好。

关于java - Keylistener 与timerlistener 在同一类内。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20582287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com