Java 使用定时器制作动画?

Java 使用定时器制作动画?,java,timer,Java,Timer,我试图理解如何使用一种基本的动画。我可以使用线程,但是很多人告诉我不要在java中使用多线程。我想我会做一些类似的事情: Timer t = new Timer(10, somthing); t.start(); x++; t.end(); 这是我对它的基本理解。有人可以链接一个教程或解释如何让时间每隔10秒或更长时间做一件事吗?首先,为什么告诉你不要使用多线程?对于现代计算机来说,这似乎是一个相当有限的规则 似乎你想安排一个任务以给定的速率发射。您应该查看Timer\schedule()。它

我试图理解如何使用一种基本的动画。我可以使用线程,但是很多人告诉我不要在java中使用多线程。我想我会做一些类似的事情:

Timer t = new Timer(10, somthing);
t.start();
x++;
t.end();

这是我对它的基本理解。有人可以链接一个教程或解释如何让时间每隔10秒或更长时间做一件事吗?

首先,为什么告诉你不要使用多线程?对于现代计算机来说,这似乎是一个相当有限的规则

似乎你想安排一个任务以给定的速率发射。您应该查看
Timer\schedule()
。它允许您传入一个任务,以及为该任务计时的一些配置

public class TimerDemo {
     public static void main(String[] args) {
          // creating timer task, timer
          TimerTask tasknew = new TimerSchedulePeriod();
          Timer timer = new Timer();

          // scheduling the task at interval
          timer.schedule(tasknew, 0, 10);      
     }

    // this method performs the task
    public void run() {
         System.out.println("timer working");      
    }    
}

源代码:

如果您想使用摆动计时器,可以制作如下:

    Timer timer = new Timer();
//delayed timer
    timer.schedule(new TimerTask() {

    @Override
    public void run() {
      //do your code after a delay (delayInMillis)
    }
    }, delayInMillis);

//repeating timer

timer.scheduleAtFixedRate(new TimerTask() {

    @Override
    public void run() {
      //do your code every repeatTimeInMillis
    }
    }, 0, repeatTimeInMillis;
我对动画的建议是创建一个整数,在这个整数中,您可以随计时器进行更改。绘制动画时,如果int是特定变量,则可以绘制特定图像。(使用if-else语句或switch语句)

我希望我能帮上忙:D

“不要在Java中使用多线程”听起来不对。这个建议可能是针对Swing和在事件调度线程上运行应用程序/进行绘制。在这种情况下,您可能希望使用
java.swing.Timer
制作动画。基本结构是

Timer( int deleyInMillis, ActionListener listener )
其中,
delayInMillis
是计时器触发的
ActionEvents
之间延迟的毫秒数。
ActionListener
将是
ActionEvents
的侦听器列表。因此,每个
delayInMillis
都将调用
actionPerformed
方法

所以你可以做一些像

Timer timer = new Timer(10000, new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {
        if (someStoppingCondition) {
            ((Timer)e.getSource()).stop();  
        } else {
            // do something every ten seconds.
        }
    }
});
timer.start();
你可以在网站上看到更多。您还可以看到一组示例和