java为绘制添加计时器
我的程序当前从一个文本文件读取数据,并根据数组中的下一个值绘制不同颜色的圆圈。目前我正在读取数组中的前10个值,因此应该有10个绘制的圆。这些圆都是同时绘制的,但我希望它们一个接一个地绘制,例如,每个绘制的圆之间有两秒钟的间隔。下面的代码是用于读取值和绘制圆的部分。谁能帮帮我吗。我很困惑在哪里以及如何添加计时器
public void paintComponent(Graphics g) {
drawShapes(g, circlesT);
}
public void drawShapes(Graphics g, ArrayList<Shape> circlesT) {
Graphics2D ga = (Graphics2D) g;
ga.drawImage(newImage, 0, 0, null);
for (int i = 0; i < circlesT.size(); i++) {
ga.draw(circlesT.get(i));
ga.setPaint(Color.white);
ga.fill(circlesT.get(i));
}
for (int i = 0; i < 10; i++) {
if (read.temp.get(i) < 31 && read.temp.get(i) > 30) {
ga.draw(circlesT.get(i));
ga.setPaint(Color.green);
ga.fill(circlesT.get(i));
} else if (read.temp.get(i) < 32 && read.temp.get(i) > 31) {
ga.draw(circlesT.get(i));
ga.setPaint(Color.red);
ga.fill(circlesT.get(i));
} else if (read.temp.get(i) < 33 && read.temp.get(i) > 32) {
ga.draw(circlesT.get(i));
ga.setPaint(Color.yellow);
ga.fill(circlesT.get(i));
}
}
}
# 1 楼答案
在绘画方法中设置计时器或睡眠不是一个好主意。这将阻塞整个应用程序并混淆用户
您可以使用在另一个线程中一步一步构建的屏幕外图像,并简单地在paint方法中显示该图像
代码的总体布局可能如下所示:
在
drawShapes
方法中,您可以在图像img
上绘制到i
的圆。在此之后,对invalidate
和repaint
的调用导致paintComponent
被调用。在这里,您只需使用drawImage
将img
的内容放在屏幕上