# validate(), invalidate(), repaint(),... Was kommt wann?



## s4ke (22. Apr 2011)

Hallo allerseits,

Ich bin derzeit am Grübeln, ob ich das mit den oben genannten Methoden richtig mache. Wann muss ich was machen, wenn ich Swing Komponenten verändere? Könnte mir das jemand mal genau erklären? Dazu habe ich auch im Internet entweder widersprüchige Antworten gefunden oder überhauptkeine...


----------



## Beni (22. Apr 2011)

Wir haben dazu sogar was in unserer FAQ.


----------



## s4ke (22. Apr 2011)

Okay. Danke. Brauche ich dann auch nach repaint() ein invalidate gefolgt von einem revalidate()?


----------



## Beni (22. Apr 2011)

Kommt immer darauf an, wie du deine Swing Componenten veränderst:
 - Wenn sich die Position der Kinder (das Layout) änderst: revalidate
 - Wenn du neu zeichnen möchtest: repaint
 - Wenn du beides machst: revalidate + repaint
 - Im Zweifellsfalle: revalidate + repaint, denn die Operationen sind nicht allzu teuer.
 - Wenn garnichts passiert: invalidate + validate, aber das sollte meistens nicht notwendig sein.


----------



## s4ke (22. Apr 2011)

Beni hat gesagt.:


> Kommt immer darauf an, wie du deine Swing Componenten veränderst:
> - Wenn sich die Position der Kinder (das Layout) änderst: revalidate
> - Wenn du neu zeichnen möchtest: repaint
> - Wenn du beides machst: revalidate + repaint
> ...



Okay, endlich mal eine super Erklärung dafür. Also brauch ich bei einem JScrollPane und einer JList beides, weil ich ja das Layout brauche und neugezeichnet werden soll, oder?

Bei simplem Hinzufügen zu einer JList brauche ich aber nur revalidate oder?


----------



## s4ke (22. Apr 2011)

Hmmm, da sehe ich gerade ein Problem, sobald ich revalidate und danach repaint mache, zerstört mir das die Selection. Reicht dann nur ein repaint?

EDIT: Das kommt davon, wenn man seine eigenen Methoden nicht richtig benutzt. Kommando zurück  :lol:


----------

