On Thu, 14 Mar 2002 19:10:57 GMT, nospam@nospam.com (Flemming Jensen)
wrote:
>On Thu, 14 Mar 2002 10:05:17 +0100, "Kasper Kau" <kasper@kau.dk>
>wrote:
>
>>Et kald til repaint() returnerer med det samme og bevirker at GUI'en MÅSKE
>>opdaterer sig selv. Hvordan kan man få repaint() metoden til "at hænge"
>>indtil et update() job rent faktisk er blevet udført? Nogen som kender
>>artikler om dette eller selv har et dybdegående forslag til en løsning?
>
>Du skal ind og bruge SwingUtilities.invokeAndWait(...). I
>dokumentationen om API'en (den der følger med J2SDK) kan du se et
>eksempel på hvordan den anvendes.
>
>Eksemplet går ikke direkte på Swing, men der er en link til en side
>der rimelig detaljeret forklare problematikken omkring flere tråde
>og Swing - det grundlæggende problem er som bekendt at den tråd der
>foretager den egentlige opdatering af GUI'en (tegner den) kører med
>lavere prioritet, og derfor udsultes hvis der er rift om CPU'en.
Jeg kom til at tænke på at jeg har et eksempel, hvor jeg bruger
SwingUtilities.invokeAndWait(...); hvor jeg laver en klasse til
at indkapsle problemet med tvungen opdatering: GUI_Updater.
Du kan finde det i DocJava (
http://nostromo.ikasths.dk/docjava)
Gå ind under:
Multiprogrammering->Tråde
og gå ned i bunden. Der er en link til thread_monitor.zip, der
indeholder eksemplet.
BTW: Det er et _gammelt_ eksempel, så der er nok ting jeg ville
lave anderledes i dag, men jeg var lige inde og se på
GUI_Updater.java, og den ser rimelig okay ud.
/Flemming Jensen