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.
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().