[java] JFrame scherm leegmaken

Pagina: 1
Acties:
  • 264 views sinds 30-01-2008
  • Reageer

  • Dr. Boktor
  • Registratie: Januari 2001
  • Laatst online: 21-07 01:34
Hoe kan ik wanneer ik een heel scherm heb opgebouwd met allemaal knoppen en andere toeters en bellen, het scherm weer leegmaken (dus de inhoud erop mag weg), zodat ik het scherm weer opnieuw kan opbouwen met eventueel andere componenten?
Ik heb geprobeerd om de ContentPane 2 keer op te slaan in het begin. Op de eerste Container probeer ik dan alles te bouwen, en wanneer ik een ander scherm wil gebruiken, open ik mijn backup-contentpane, maar dat idee werkt niet. Heeft iemand ervaring met hoe dit wel moet?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik werk zelf altijd vanuit een JPanel die ik op het laatste in een JFrame plaats met setContentPane. Het is dan eenvoudig om de contentPane aan te passen (alhoewel ik met niet kan herinneren of ik ooit schermen hergebruikt heb). Ik neem aan dat je er gewoon een nieuwe JPanel in kan plaatsen om hem te legen. Maar waarom wil je dat scherm hergebruiken?

  • Dr. Boktor
  • Registratie: Januari 2001
  • Laatst online: 21-07 01:34
Ik wil een systeem maken waarbij je inlogt en op basis van je login krijg je dan een bepaald hoofdscherm. Met dat hoofdscherm zijn een aantal dingen te doen, waaronder uitloggen. Als je dan weer uitlogt, moet het hoofdscherm weg en komt er weer een InlogDialoogje naar voren. Dan kun je weer inloggen en moet het mogelijk zijn om een ander hoofdscherm te krijgen. Vervolgens moet er weer uitgelogd kunnen worden, inloggen en dan bijvoorbeeld het eerste hoofdscherm weer krijgen. Dit eerste hoofdscherm moet weer opnieuw opgebouwd worden, dit moet niet hetzelfde scherm zijn als het scherm dat voor de eerste keer tevoorschijn kwam.

Kort samengevat:
Nadat je bent inlogd krijg je een hoofdscherm. Vervolgens log je uit en dan verdwijnt dat hoofdscherm (het mooiste zou zijn als alle componenten ook weg zouden gaan). Nu kan er weer opnieuw ingelogd worden.

[ Voor 0% gewijzigd door Dr. Boktor op 24-10-2002 12:28 . Reden: typo ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je zou ook even naar de CardLayout kunnen kijken, hiermee kan je erg eenvoudig tussen panels wisselen. Ik gebruik hem zelf ook voor dit soort dingen.

  • bazzs2001
  • Registratie: April 2002
  • Laatst online: 13-06 11:18

bazzs2001

je moet knagen wat lekker is

werkt .getContentPane().removeAll() niet?

groeten


  • Dr. Boktor
  • Registratie: Januari 2001
  • Laatst online: 21-07 01:34
Ik heb het even vlug bekeken en het lijkt erop dat dat is wat ik zocht. Ik kon het me al niet voorstellen dat hier geen handigere manier voor was, want meerdere schermen zal toch wel vaak voorkomen leek me. Alvast bedankt!

  • Dr. Boktor
  • Registratie: Januari 2001
  • Laatst online: 21-07 01:34
getContentPane().removeAll() alleen werkte niet, ik bleef de oude achtergrond nog zien. Na erna een lege JPanel tegenaan gegooid te hebben, werkte het wel. Vervolgens maak ik het scherm nog een keer leeg bij een nieuwe schermopbouw. Het werkt nu. Jij ook bedankt dus!
In het vervolg maak ik echter wel gebruik van de CardLayout denk ik, want dat is een stuk eleganter lijkt mij.

  • bazzs2001
  • Registratie: April 2002
  • Laatst online: 13-06 11:18

bazzs2001

je moet knagen wat lekker is

.getContentPane().removeAll()
en dan repainten misschien

edit:
Dr.Boktor schreef op 24 oktober 2002 @ 13:10:
In het vervolg maak ik echter wel gebruik van de CardLayout denk ik, want dat is een stuk eleganter lijkt mij.
:7 kan ook

groeten


  • Theodoor
  • Registratie: Juni 1999
  • Laatst online: 17-03 10:50
Volgens mij moet je .getContentPane().removeAll() en dan nog een pack() erover heen gooien.

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 17-08 22:44
pack() lijkt me zo op het eerste gevoel niet zo'n goed idee.... pack past namelijk meestal de container size aan. En stel dat je niks in je container hebt, dan wordt ie de minimum size van de container.

Je moet rekening houden met een tweetal zaken. Je hebt de meeste gui object geregistreerd bij een event listener en je hebt je objecten aangemeld bij een container. Als ik het goed heb zou het voldoende moeten zijn om je object bij de container te verwijderen (middels remove all dus). Ten slotte moet je dan je scherm nog invalidaten. Met een repaint...

(Ik zou dit eigenlijk ook even moeten checken.)

  • bazzs2001
  • Registratie: April 2002
  • Laatst online: 13-06 11:18

bazzs2001

je moet knagen wat lekker is

The - DDD schreef op 25 oktober 2002 @ 15:04:
Je moet rekening houden met een tweetal zaken. Je hebt de meeste gui object geregistreerd bij een event listener en je hebt je objecten aangemeld bij een container. Als ik het goed heb zou het voldoende moeten zijn om je object bij de container te verwijderen (middels remove all dus). Ten slotte moet je dan je scherm nog invalidaten. Met een repaint...
dat zei it toch :*) 8)7 8)

groeten

Pagina: 1