JFrame mit mehreren Panels

  • Themenstarter Themenstarter Amare
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
A

Amare

Gast
Hallo zusammen!

Ich hab hier einen JFrame, dem ich zwei JPanels mitgeben möchte, um immer nur eines davon visible zu setzen. Das ganze hat in einem Applet schon super funktioniert, aber bei einer normalen GUI klappt das nicht mehr.

-> Wenn ich nur eines der beiden Panels adde, gehts.
-> Sobald ich beide adde seh ich gar keins.


Hat jemand einen Tipp für mich ?


Code:
				BorderLayout thisLayout = new BorderLayout();
				this.getContentPane().setLayout(thisLayout);
				
				configPanel = new Config_Panel();
				parsingPanel = new Parsing_Panel();
				this.getContentPane().add(parsingPanel);
				this.getContentPane().add(configPanel);
				configPanel.setVisible(false);
				parsingPanel.setVisible(true);
 
wenn du schon ein border layout verwendest könntest du das so machen:
Code:
this.getContentPane().setLayout(new BorderLayout());
            
configPanel = new Config_Panel();
parsingPanel = new Parsing_Panel();
this.getContentPane().add(parsingPanel,BorderLayout.NORTH);
this.getContentPane().add(configPanel,BorderLayout.SOUTH);
configPanel.setVisible(false);
parsingPanel.setVisible(true);

sollte nur eines angezeigt werden...
 
bei dem einen schreibst du ja setVisible(false) ;-)
Ausserdem brauchst du nicht alle Panels sichtbar zu schalten. es reicht, wenn du das Frame mit setVisible(true) sichtbar machst...
 
thx,
anscheinend muss ich eine unterschiedliche Position im BoarderLayout mitgeben damit's funktioniert.

Vielen Dunk !
 
Weiterführende Frage:

Wenn ich mehrere Panels im JFrame switchen möchte, gibt es da eine Möglichkeit alle an der gleichen Position (!) zu haben um immer nur eines sichbar zu machen OHNE beim Switchen die Panels jedesmal wieder zu entfernen ?
 
Das will ich aber vermeiden.

Und wenn ich dynamisch das aktuelle Panel remove und ein neues dazugebe, funktioniert das auch nicht, das neue wird nicht angezeigt ...

Code:
this.getContentPane().removeAll();
this.getContentPane().add(configPanel, BorderLayout.CENTER);

Muss ich da noch irgendetwas anderes aufrufen ?
 
Anonymous hat gesagt.:
Das will ich aber vermeiden.

Und wenn ich dynamisch das aktuelle Panel remove und ein neues dazugebe, funktioniert das auch nicht, das neue wird nicht angezeigt ...

Code:
this.getContentPane().removeAll();
this.getContentPane().add(configPanel, BorderLayout.CENTER);

Muss ich da noch irgendetwas anderes aufrufen ?

Versuche mal:
Code:
this.getContentPane().removeAll();
this.getContentPane().add(configPanel, BorderLayout.CENTER);
this.validateTree();
 
Nach repaint() war interessanterweise KEIN PANEL zu sehen, nach validateTree() das gewünschte.

SCHOENEN DUNK !
 
Letzte Korrektur:

this.validateTree();
this.repaint();

ist nötig !
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben