2009-05-26 24 views
1

我有一個小的Java小程序,我創建2個線程,一個線程重繪,另一個將圖像從點移動到用戶點擊的位置。問題在於,當我調用move函數時,它會循環直到圖像出現在用戶點擊的位置,但它不會重新繪製,直到我斷開循環,即使執行移動的線程和執行繪製的線程是分開的。如何在移動精靈的同時重新繪製小程序?

縮短關鍵點的版本:

  • 我的程序是使用所述塗料()方法一個applet

  • 我有2個線程一個移動的圖像和其它油漆該圖像

  • 當我移動圖像它是在一個while循環

  • 畫線仍然是調用代表aint()但是就呼叫而言,它不會重新打印

謝謝你的時間。

回答

1

閱讀Java的AWT框架的繪製系統的介紹可能很有用。看看Sun的一個例子:http://java.sun.com/products/jfc/tsc/articles/painting/index.html

在你的情況下,你不需要2個線程。負責重新繪製applet的線程由AWT創建。它被稱爲事件調度線程或EDT。所以你只需要改變你的圖像的位置,並在每次更改時調用applet上的重繪方法。

+0

因爲移動代碼由另一個類處理,所以在每個位置更改之後,我無法調用repaint方法。無論如何,這不是一個重繪未被召喚的問題,因爲它是。它只是在圖像完成移動之前不會調用油漆。 – MESLewis 2009-05-26 20:06:33