|
| 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
| |
|
|