我有一个小的Java小程序,我在其中创建2个线程,一个线程重新绘制,另一个将图像从一个点移动到用户点击的位置。问题是,当我调用move函数时,它会循环,直到图像是用户单击的位置,但它不会重新绘制,直到我突破循环,即使执行移动的线程和执行绘制的线程是分开的。
缩短版的关键点:
我的程序是使用paint()方法的小程序
我有2个线程,一个移动图像,另一个描绘图像
当我移动图像时,它处于while循环中
绘制线程仍在调用repaint(),但就调用而言,它永远不会重新绘制
答案 0 :(得分:1)
阅读Java的AWT框架的绘画系统的介绍可能是有用的。看看Sun的一个例子:http://java.sun.com/products/jfc/tsc/articles/painting/index.html
在您的情况下,您不需要2个线程。负责重新绘制applet的线程由AWT创建。它被称为事件调度线程或EDT。因此,您只需要更改图像的位置,并在每次更改时调用applet上的重绘方法。