Avatar billede vis_dk Nybegynder
19. august 2004 - 16:32 Der er 2 kommentarer og
1 løsning

Panel dukker først op efter pack()

Hej,
Jeg har et JFrame hvori jeg add'er et enkelt JPanel. Jeg ønsker så at fjerne dette panel og indsætte et andet istedet. Dette gør jeg således:

remove(startpanel);
repaint();
       
this.getContentPane().add(sgpanel);

Startpanel'elet bliver fjernet og baggrundsfarven på JFrame'et kommer frem, dog bliver sgpanelet ikke add'et.

Hvis jeg indsætter metoden pack() efter den sidste linje så kommer sgpanelet frem, dog ændrer Frame'et herved størrelse og elementerne ændrer placering.
Avatar billede _carsten Nybegynder
19. august 2004 - 16:36 #1
Du skal kalde validate() i stedet for

this.validate();
Avatar billede _carsten Nybegynder
19. august 2004 - 16:41 #2
Der var jeg nok lidt for hurtig

this.getContentPane().add(sgpanel);
this.validate();


validate(), gør det, at det validerer dit layout efter du addet en komponent, i den situation er repaint() overflødig, da det er dit layout som skal bokses på plads igen

pack(), gør det (samme), dog væsentlig mere udvidet, idet pack() validerer hele din GUI med ALT hvad den indeholder, incl. JFrame, og du er kun interesseret i at få valideret dit layout - derfor validate().
Avatar billede vis_dk Nybegynder
19. august 2004 - 16:53 #3
Perfekt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester