2009-05-26 11 views
1

J'ai une petite applet java où je crée 2 threads, un thread repeint et l'autre déplace une image d'un point à l'endroit où l'utilisateur clique. Le problème est que lorsque j'appelle la fonction de déplacement, elle boucle jusqu'à ce que l'utilisateur clique sur l'image, mais elle ne se repeindra pas jusqu'à ce que je sorte de la boucle, même si le fil faisant le déplacement et le filetage sont séparés.comment repeindre une applet en déplaçant une image-objet?

version raccourcie de points clés:

  • mon programme est un applet en utilisant la peinture() Méthode

  • I have 2 fils on se déplace d'une image et les autres peintures que l'image

  • lorsque je déplace l'image, il est dans une boucle while

  • le fil de peinture est toujours appelant rep aint() mais c'est aussi loin que l'appel se passe, il ne repeint jamais

merci pour votre temps.

Répondre

1

Il peut être utile de lire une introduction du système de peinture du framework AWT de Java. Jetez un oeil par exemple à celui de Sun: http://java.sun.com/products/jfc/tsc/articles/painting/index.html

Dans votre cas, vous n'avez pas besoin de 2 threads. Le fil chargé de repeindre votre applet est créé par AWT. Il est appelé le fil d'expédition d'événement ou EDT. Il vous suffit donc de changer la position de votre image et à chaque changement appelez la méthode repaint sur votre applet.

+0

Je ne peux pas appeler la méthode de repeint après chaque changement de position car le code de déplacement est géré par une autre classe. De toute façon il n'est pas question de repeindre de ne pas être appelé parce que c'est le cas. Il ne suffit pas d'appeler la peinture jusqu'à ce que l'image soit terminée. – MESLewis

+0

Montrez votre code, il sera plus simple de vous aider. –