17. juni 2003 - 23:10Der er
7 kommentarer og 1 løsning
Swing - JFrame opdateres ikke rigtigt
Jeg har en grafisk applikation bestående af en JFrame, hvortil er knyttet et JPanel, som igen indeholder de øvrige komponenter.
Min applikation er dynamisk i den forstand, at nye komponenter tilføjes og fjernes ved forskellige events.
Problemet er, at når jeg fjerner komponenter, bliver der "små rester" af komponenterne tilbage. Hvis jeg dog f.eks. trækker i vinduet eller minimerer og derefter maksimerer, forsvinder disse rester, så jeg mangler en form for opdatering af vinduet.
Jeg har forsøgt med validate() på såvel min JFrame som mit JPanel uden held.
Hvad er forklaringen på dette, og hvad kan jeg herefter gøre?
Essensen er her at Swing anvender dirty regions til at gentegne. Det vil sige at den forsøger at bestemme hvilke områder der er ændret og kun gentegne disse. Hvis de rigtige områder ikke bliver markeret som dirty er eneste mulighed at tvinge en fuldstændig gentegning igennem. Dette sker f.x. ved en resize og gøres (som sagt) programmelt med Component.repaint().
Det "sjove" er, at min applikation er sådan skruet sammen, at jeg gentegner i den forstand, at jeg først foretager JPanel.removeAll() og derefter tilføjer komponenterne igen - men det er åbenbart ikke nok. repaint() giver dog det ønskede resultat.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.