【发布时间】:2015-05-25 07:07:00
【问题描述】:
现在我有一个延迟 5 秒的计时器,但是在它运行一次后我需要一个不同的延迟。 我正在浏览一些图片,在第一轮它应该显示它们 5 秒钟。之后,它应该显示它们 10 秒。如何在运行时更改 Timer 的延迟?
必须发生的事情:
- 启动计时器
- 跑5秒
- 更改延迟
- 运行 10 秒
【问题讨论】:
-
哪个
Timer?java.util.Timer或javax.swing.Timer?
现在我有一个延迟 5 秒的计时器,但是在它运行一次后我需要一个不同的延迟。 我正在浏览一些图片,在第一轮它应该显示它们 5 秒钟。之后,它应该显示它们 10 秒。如何在运行时更改 Timer 的延迟?
必须发生的事情:
【问题讨论】:
Timer? java.util.Timer 或 javax.swing.Timer?
尝试添加一些代码!
您需要检查计时器是否有 5 秒使其变为 10 等等。
int delayTime = 5;
//run first delay
if (delayTime == 5){
delayTime = 10;
}
这是一些想法的代码,不知道它在你的项目中看起来如何。
【讨论】:
您的用例可以有两种方法:
第一种方法:
就像说我想展示图片 1000 秒。所以我会执行for循环直到1000秒;或者如果您想无限运行它,那么您可以在 for 循环中更改条件。下面的代码将在每 5 秒延迟后执行 for 循环。
int delayTimeInMiliSec;
for(int delayTime = 5 ; delayTime<=1000; delayTime = delayTime+5){
delayTimeInMiliSec = delayTime * 1000;
// here Call your method that shows pictures
Thread.sleep(delayTimeInMiliSec);
}
第二种方法:
代码示例:
import java.util.TimerTask;
// Create a class extends with TimerTask
public class ScheduledTask extends TimerTask {
// Add your task here
@Override
public void run() {
//show pictures code
}
}
import java.util.Timer;
public class SchedulerMain {
public static void main(String args[]) throws InterruptedException {
Timer time = new Timer(); // Instantiate Timer Object
ScheduledTask st = new ScheduledTask(); // Instantiate SheduledTask class
time.schedule(st, 0, 5000); // Create Repetitively task for every 5 secs
}
}
【讨论】: