Updaten van een component in een (gridbag)layout

Status
Niet open voor verdere reacties.

Jeppey

Gebruiker
Lid geworden
5 jun 2006
Berichten
26
Ik ben bezig met een programma waarbij ik een probleem tegenkom met GUI's. Ik maak gebruik van de GridBagLayout waarbij ik het frame in een aantal cellen opdeel.
In pseudocode ziet het principe er zo uit

PHP:
Constructor(){
   A = new JPanel();
   B = new JPanel();
   C = new JPanel();

   add( A );
   add( B );
   add( C );
}

Het gevolg is dat de weergave precies de componenten A, B en C laat zien. Geen probleem dus. Echter wil ik later in het programma component B vervangen met een nieuw component. Om dit te bereiken doe ik:
PHP:
B = new JPanel();

Maar deze nieuwe component wordt niet weergegeven. Weet iemand hoe ik ervoor kan zorgen dat het betreffende component geüpdate wordt? Ik heb al validate(), invalidate(), repaint() en update() geprobeer, maar zonder succes.
 
Je moet je nieuwe panel ook weer toevoegen!
Om je layout manager te vertellen dat je nieuwe panel een oude vervangt moet je deze op dezelfde plaats laten zetten als de oude. Dit kan alleen als je add(panel, gridbagconstraint) gebruik ipv. add.

Een alternatief is om met CardLayout te gebruiken. Je maakt dan 3 panels:
panel1 heeft cardLayout en hieraan voeg je dan panel 1a, 1b toe. met add(panel1a,"naam1") en add(panel1b,"naam2")..

met ((CardLayout)panel1.getLayout()).show("naam1") kan je dan kiezen of je panel 1a of panel 1b wil laten zien..

succes,
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan