Gå til innhold

Hvordan fjerne komponent fra GUI-vindu?


Anbefalte innlegg

Hei,

 

Jeg har laget et program, hvor jeg til venstre (BorderLayout.WEST) i vinduet har 4 ulike knapper som endrer innholdet i BorderLayout.CENTER vha. ActionListener...

 

Når programmet starter, add'es automatisk panelCenter-panelet med verdien til det panelet jeg ønsker at automatisk skal komme opp i hovedvinduet.

 

Når én av de andre 4 knappene til venstre i programmet klikkes på, endres panelCenter-panelets verdi til et annet panels:

 

panelCenter = new nyttPanel();
add(panelCenter, BorderLayout.CENTER);
pack();

 

Jeg har aldri laget noe slik før, så jeg aner ikke om dette er den beste måten å gjøre det på, men det har uansett dukket opp et problem:

 

Det virker som om den originale verdien til panelCenter forblir i gui-vinduet, selv etter at jeg har oppdatert dens verdi og kjørt add(). Hvis jeg klikker på én av de andre knappene, endres innholdet i BorderLayout.CENTER, men hvis jeg da f.eks. drar vinduet litt utenfor skjemen, og så inn igjen, eller på en annen måte får vinduet til å måtte oppdatere seg selv, så forsvinner det nye innholdet til fordel for det originale panelet som var panelCenter sin verdi.

 

Det kan altså se ut som om jeg må fjerne panelet som allerede ligger der før jeg legger til et nytt?

Er det slik at hvis jeg kjører

add(panelCenter, BorderLayout.CENTER);

så legges den nye verdien oppå den eksisterende? Eller byttes den ut?

Jeg har inntrykk av at den gamle blir liggende under, så finnes det noen metode for å fjerne komponenter fra BorderLayout.CENTER?

Lenke til kommentar
Videoannonse
Annonse

java.awt.Container som du kaller add på har remove-metoder også. Se http://java.sun.com/j2se/1.4.2/docs/api/ja.../Container.html

 

Ta også en titt på validate-metoden:

 

The validate method is used to cause a container to lay out its subcomponents again. It should be invoked when this container's subcomponents are modified (added to or removed from the container, or layout-related information changed) after the container has been displayed.

http://java.sun.com/j2se/1.4.2/docs/api/ja...html#validate()

Endret av balletryne
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...