我写了一个Java小程序,在循环的每次迭代中更新后,它会在画布上以相同的位置打印文本。文本值更改并且输出正确,但我在循环中调用的 clearRect() 方法在每次打印之前清除文本区域不起作用,并且文本被覆盖。我最多可以看到 2-3 次迭代的输出,但随后它不可读。小程序实际上执行倒计时并以 HH : MM : SS 格式显示时间。下面是我的代码。请预测原因和/或更正:
/* Only the section of the code I'm having problems in is included */
while (t>=0) {
//int t stores total time in seconds
int h=(t/3600);
int m=((t%3600)/60);
int s=((t%3600)%60);
str=h+" : "+m+" : "+s;
/* String str holds data to be displayed, i.e., time in HH : MM : SS format */
g.clearRect(20,200,150,30);
g.drawString(str,20,200);
try{
Thread.sleep(1000); //elapses 1 second
}
catch(Exception e) {}
t=t-1;
}
使用带有颜色的drawRect而不是clearRect。 就像@ControlAltDel解释的那样。我不确定上面的代码是否位于您的油漆或运行中。我仍然建议使用可运行的方法,而不是将其绘制在循环中。与此链接类似。祝你好运