# how to repaint() in a schleife?



## baumstängleschäler (18. Mai 2004)

okay, erst der code:

```
int x=xmenueicon2-xmenueicon1;
               int y=ymenueicon2-ymenueicon1;
               for(int i=0;i<10;i++){
                   xmenueicon1+=x/10;
                   ymenueicon1+=y/10;
                   try{Thread.sleep(100);}catch(Exception ex){}
                   repaint();
               }
```


Anstatt das das applett alle 0,1 sekunden das bild mit einer anderen position zeichnet, wird erst beim letzten durchgang (nach einer sekunde) der schleife das bild aktualisiert.
Ausnahme: Wenn ich JOptionPane.showMessageDialog(null,"irgendwas"); einbaue, dann wird jeder einzelne schritt gezeichnet.


----------



## Beni (18. Mai 2004)

Mit "Thread.sleep" blockierst du wahrscheinlich den AWT-Thread (der auch zeichnen würde...).

Mach doch einen zusätzlichen Thread, der das repaint aufruft:


```
new Thread(){
  public void run(){
    while( ... )
      repaint();
  }
}.start();
```


----------



## baumstängelsschäler (18. Mai 2004)

thx,
war eine "perfekte" Lösung. Kürzer als gedacht und schön übersichtlich.

Nochmals danke


----------

