Toon posts:

[JAVA] JPanel in een JFrame repaint niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Tsja, zoals de topictitel al een beetje door laat schemeren, heb ik dus een probleem met een JPanel en een JFrame.
Ik heb een aantal klasses die overerven van een JPanel, in deze klasses teken ik verschillende GUI's.
In een controller klasse (HoofdScherm, deze erft over van JFrame) zorg ik ervoor dat de goede JPanel in het JFrame getekend wordt. Dit gebeurd goed, totdat ik een ander JPanel op mijn scherm wil hebben. De volgende code voer ik dan uit:
code:
1
2
3
4
5
6
jButton2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                getContentPane().remove(artikelGroep);
                getContentPane().add(klant);
            }
        });

Als er op een knop geklikt wordt moet dat dus gebeuren. Hij repaint de nieuwe panel echter niet. Ook niet met repaint() er echter, this.getContentPane().repaint() ook geprobeerd. De repaint() in alle mogelijke klassen gezet, maar nix hielp, van de topics hier werd ik ook niet veel wijzer.
Weet iemand hoe ik dit op kan lossen????

edit:

Na een handmatige resize van het JFrame wordt het panel uiteraard wel zichtbaar.

[ Voor 6% gewijzigd door Verwijderd op 19-12-2002 23:30 ]


  • Xoverride
  • Registratie: December 2000
  • Laatst online: 30-07 10:32

Xoverride

sabai sabai

Nou dit komt volgens mij omdat je niet vraagt welke knop iets gedaan heeft in je actionPerformed er moet iets staan als:

if(e.getSource() == jButton2){
//voeg dan het panel toe
}

suc6

  • TweakV
  • Registratie: April 2000
  • Laatst online: 16-03 18:35
Ik weet het niet zeker maar volgens mij kan je hier het beste getContentPane().validate(); gebruiken.

public void validate()
Validates this container and all of its subcomponents.
The validate method is used to cause a container to lay out its subcomponents again. It should be invoked when this container's subcomponents are modified (added to or removed from the container, or layout-related information changed) after the container has been displayed.

Verwijderd

Topicstarter
Die validate deed het hem inderdaad, bedankt.

BTW Xoverride, doordat ik een anonymous class aanmaak van ActionListener voert hij automatisch de code van jButton2 uit. Je hoeft alleen e.getSource te gebruiken als je bv implements ActionListener in je klasse zet.

  • Xoverride
  • Registratie: December 2000
  • Laatst online: 30-07 10:32

Xoverride

sabai sabai

Verwijderd schreef op 19 december 2002 @ 23:56:
Die validate deed het hem inderdaad, bedankt.

BTW Xoverride, doordat ik een anonymous class aanmaak van ActionListener voert hij automatisch de code van jButton2 uit. Je hoeft alleen e.getSource te gebruiken als je bv implements ActionListener in je klasse zet.
Oh so! ja dat klopt.. maar ik zie dat het is opgelost nu...
:9