/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Panel.remove()
Fra : Thomas Sejr Jensen


Dato : 11-09-01 22:15

Hej!

Jeg har en applikation med et Frame. Dette Frame indeholder et Panel. Dette
Panel indeholder et andet Panel, hvis indhold (mange labels, nogle
checkboxes og nogle knapper) jævnlig bliver ændret. For at få opdateret
skærmen bruger jeg remove() til at fjerne sidstnævnte Panel og derefter
tilføje det nye med add().
Problemet er hastigheden, det tager omkring 7 sekunder at udføre remove()
metoden. Er der nogle forslag til at få hastigheden øget??
På forhånd tak!


---------------------------------------------
Thomas Sejr Jensen
Thomassj@worldonline.dk
www.worldonline.dk/~thomassj
---------------------------------------------



 
 
Lars Dam (11-09-2001)
Kommentar
Fra : Lars Dam


Dato : 11-09-01 22:37

On Tue, 11 Sep 2001 23:15:08 +0200, "Thomas Sejr Jensen"
<thomassj@worldonline.dk> wrote:

>Hej!
>
>Jeg har en applikation med et Frame. Dette Frame indeholder et Panel. Dette
>Panel indeholder et andet Panel, hvis indhold (mange labels, nogle
>checkboxes og nogle knapper) jævnlig bliver ændret. For at få opdateret
>skærmen bruger jeg remove() til at fjerne sidstnævnte Panel og derefter
>tilføje det nye med add().

Hvorfor bruger du remove? invalidate(), eller repaint() burde være nok
til at opdatere...

>Problemet er hastigheden, det tager omkring 7 sekunder at udføre remove()
>metoden. Er der nogle forslag til at få hastigheden øget??
>På forhånd tak!

vh. ld


Thomas Sejr Jensen (12-09-2001)
Kommentar
Fra : Thomas Sejr Jensen


Dato : 12-09-01 21:09

Jeg har prøvet med repaint(), men panelet bliver ikke opdateret af det. Jeg
vil prøve med invalidate(). Tak for hjælpen!
"Lars Dam" <larsdamXXspamXXprotectionXX@post2.tele.dk> skrev i en meddelelse
news:6u0tpt0chb547i33un72g968t08uen900p@4ax.com...
> On Tue, 11 Sep 2001 23:15:08 +0200, "Thomas Sejr Jensen"
> <thomassj@worldonline.dk> wrote:
>
> >Hej!
> >
> >Jeg har en applikation med et Frame. Dette Frame indeholder et Panel.
Dette
> >Panel indeholder et andet Panel, hvis indhold (mange labels, nogle
> >checkboxes og nogle knapper) jævnlig bliver ændret. For at få opdateret
> >skærmen bruger jeg remove() til at fjerne sidstnævnte Panel og derefter
> >tilføje det nye med add().
>
> Hvorfor bruger du remove? invalidate(), eller repaint() burde være nok
> til at opdatere...
>
> >Problemet er hastigheden, det tager omkring 7 sekunder at udføre remove()
> >metoden. Er der nogle forslag til at få hastigheden øget??
> >På forhånd tak!
>
> vh. ld
>



Lars Dam (12-09-2001)
Kommentar
Fra : Lars Dam


Dato : 12-09-01 23:20

On Wed, 12 Sep 2001 22:09:17 +0200, "Thomas Sejr Jensen"
<thomassj@worldonline.dk> wrote:

>Jeg har prøvet med repaint(), men panelet bliver ikke opdateret af det. Jeg
>vil prøve med invalidate(). Tak for hjælpen!

Evt. efterfulgt af en validate();

repaint() fortæller blot systemet at knappen skal gentegnes.
Invalidate() fortæller systemet at komponenten skal skal re-layoutes
og så repaint()'es.

Det går hurtigere hvis du bruger invalidate istedet for at fjerne() og
add() dine komponenter, idet der sker en invalidate(), validate() og
repaint() på din parent komponent for _hver_ gang du remove()'er og
add()'er en komponent...(!)

dvs. har du 50 komponenter, sker der 100
invalideringer/valideringer/repaints. Du kan opnå det samme ved blot
at kalde invalidate() på din parent komponent
(getParent().invalidate(), eller evt.
getTopLevelAncestor().invalidate(); )

vh. ld

Thomas Sejr Jensen (14-09-2001)
Kommentar
Fra : Thomas Sejr Jensen


Dato : 14-09-01 19:15

Takker! Ventetiden er nu nede på et par sekunder vha.
getParent().invalidate().
"Lars Dam" <larsdamXXspamXXprotectionXX@post2.tele.dk> skrev i en meddelelse
news:finvpto8pdnt0rhl40laamk7robnervb42@4ax.com...
> On Wed, 12 Sep 2001 22:09:17 +0200, "Thomas Sejr Jensen"
> <thomassj@worldonline.dk> wrote:
>
> >Jeg har prøvet med repaint(), men panelet bliver ikke opdateret af det.
Jeg
> >vil prøve med invalidate(). Tak for hjælpen!
>
> Evt. efterfulgt af en validate();
>
> repaint() fortæller blot systemet at knappen skal gentegnes.
> Invalidate() fortæller systemet at komponenten skal skal re-layoutes
> og så repaint()'es.
>
> Det går hurtigere hvis du bruger invalidate istedet for at fjerne() og
> add() dine komponenter, idet der sker en invalidate(), validate() og
> repaint() på din parent komponent for _hver_ gang du remove()'er og
> add()'er en komponent...(!)
>
> dvs. har du 50 komponenter, sker der 100
> invalideringer/valideringer/repaints. Du kan opnå det samme ved blot
> at kalde invalidate() på din parent komponent
> (getParent().invalidate(), eller evt.
> getTopLevelAncestor().invalidate(); )
>
> vh. ld



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408927
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste