如何在移动精灵时重新绘制小程序?

时间:2009-05-26 19:38:13

标签: java multithreading paint

我有一个小的Java小程序,我在其中创建2个线程,一个线程重新绘制,另一个将图像从一个点移动到用户点击的位置。问题是,当我调用move函数时,它会循环,直到图像是用户单击的位置,但它不会重新绘制,直到我突破循环,即使执行移动的线程和执行绘制的线程是分开的。

缩短版的关键点:

  • 我的程序是使用paint()方法的小程序

  • 我有2个线程,一个移动图像,另一个描绘图像

  • 当我移动图像时,它处于while循环中

  • 绘制线程仍在调用repaint(),但就调用而言,它永远不会重新绘制

谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

阅读Java的AWT框架的绘画系统的介绍可能是有用的。看看Sun的一个例子:http://java.sun.com/products/jfc/tsc/articles/painting/index.html

在您的情况下,您不需要2个线程。负责重新绘制applet的线程由AWT创建。它被称为事件调度线程或EDT。因此,您只需要更改图像的位置,并在每次更改时调用applet上的重绘方法。