Java 我不知道为什么我的代码中的计时器会使动画复制其repaint()位置

Java 我不知道为什么我的代码中的计时器会使动画复制其repaint()位置,java,swing,timer,action,Java,Swing,Timer,Action,我正在用japplet为我的动画使用swing定时器。 我在理解定时器是如何工作的方面遇到了一个问题 我提出了以下代码(这是其中的一小部分): 不,不要在ActionListener内部创建新计时器,因为这样会重复创建许多计时器。相反,只需将方块移动到计时器的ActionListener中,然后调用repaint()。你读过Swing定时器教程吗?如果没有,我建议你用谷歌搜索一下。不,不要在ActionListener中创建新的计时器,因为那样会重复创建许多计时器。相反,只需将方块移动到计时器的

我正在用japplet为我的动画使用swing定时器。 我在理解定时器是如何工作的方面遇到了一个问题

我提出了以下代码(这是其中的一小部分):


不,不要在ActionListener内部创建新计时器,因为这样会重复创建许多计时器。相反,只需将方块移动到计时器的ActionListener中,然后调用
repaint()
。你读过Swing定时器教程吗?如果没有,我建议你用谷歌搜索一下。不,不要在ActionListener中创建新的计时器,因为那样会重复创建许多计时器。相反,只需将方块移动到计时器的ActionListener中,然后调用
repaint()
。你读过Swing定时器教程吗?如果没有,我敦促你谷歌一下,看看

Swing计时器(javax.Swing.timer的实例(在API参考文档中))在指定的延迟后触发一个或多个操作事件。不要将Swing计时器与1.3版中添加到java.util包中的通用计时器功能混淆

计时器基本上是一个java线程,它在延迟后或立即启动并执行分配的任务

您应该将计时器创建从上述actionperformed函数移动

  Timer timer = new Timer(1000, new ActionListener() {
                public void actionPerformed(ActionEvent e) 
                {
                     System.out.println("S");
                     p.moveSquare(p.SnakeHeadX,p.SnakeHeadY+p.SnakeHeadH);
                     p.eatBlueSquare(p.SnakeHeadX,p.SnakeHeadY);
                }
            });
    timer.start();
有关更多详细信息,请浏览

Swing计时器(javax.Swing.timer的实例(在API参考文档中))在指定的延迟后触发一个或多个操作事件。不要将Swing计时器与1.3版中添加到java.util包中的通用计时器功能混淆

计时器基本上是一个java线程,它在延迟后或立即启动并执行分配的任务

您应该将计时器创建从上述actionperformed函数移动

  Timer timer = new Timer(1000, new ActionListener() {
                public void actionPerformed(ActionEvent e) 
                {
                     System.out.println("S");
                     p.moveSquare(p.SnakeHeadX,p.SnakeHeadY+p.SnakeHeadH);
                     p.eatBlueSquare(p.SnakeHeadX,p.SnakeHeadY);
                }
            });
    timer.start();
有关更多详细信息,请浏览