我设置了TimerTask UpdateTask,但它只在我启动程序时触发一次。为什么不继续触发?
这里的一些方法是在其他课程中,如果您需要,请不要犹豫,让我知道。
import java.awt.Graphics;
import java.util.Timer;
import java.util.TimerTask;
public class graphpanel extends variables
{
Timer timer = new Timer();
int ypoint;
int barheight;
int height = getHeight();
int width = getWidth();
int bars = (int)getLife() - (int)getAge();
int xpoint = 0;
int barwidth = 20;
public graphpanel()
{
timer.schedule(new UpdateTask(), 10);
}
public void paintComponent (Graphics g)
{
super.paintComponent(g);
for (int i = 0; i < bars; i++)
{
barheight = (int) getTime(i)/100;
ypoint = height/2 - barheight;
g.drawRect(xpoint, ypoint, barwidth, barheight);
g.drawString("hey", 10*i, 40);
}
}
class UpdateTask extends TimerTask
{
public void run()
{
bars = (int)getLife() - (int)getAge();
System.out.print("TimerTask detected");
repaint();
}
}
}
答案 0 :(得分:2)
Timer.schedule(TimerTask, long)
仅安排任务执行一次性。
使用
timer.scheduleAtFixedRate(new UpdateTask(), 10, 10);
重复调用TimerTask
。
更多信息:JavaDoc
答案 1 :(得分:0)
您需要使用
scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
(或)
schedule((TimerTask task,Date firstTime,long period))
您的schedule()
方法调用中的 10为delay
,而不是period
。