1

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

关键点的缩短版:

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

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

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

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

感谢您的时间。

4

1 回答 1

1

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

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

于 2009-05-26T19:56:41.930 回答