Panel auf einem Frame wird nur manchmal gezeichnet

Tullinge

Grünschnabel
Hallo.
Ich setze mich seit zwei Wochen mit Swing auseinander und immer wenn ich denke: Jau, habs verstanden, passiert irgendwas komisches, was ich mir nicht erklären kann. Aber das folgende Problem toppt alle bisher dagewesenen. Bin verzweifelt.

Die Situation ist folgende:
Ich habe ein JFrame und als Reaktion auf einen Button-click werden diverse Komponenten von diesem Frame entfernt und ein neues JPanel daraufgelegt. Nach dem add(panel) rufe ich nun die repaint()-Methode für das JFrame auf. Ok, man sollte meinen, es klappt entweder oder es klappt nicht, aber das Verhalten ist unvorhersehbar. Wenn ich nach Start des Programms auf den entsprechenden Button klicke, liegt die Wahrscheinlichkeit bei ca. 40%, dass die von mir überschriebene paintComponent()-Methode des JPanels aufgerufen und das JPanel somit angezeigt wird. Ein list()-Aufruf zeigt aber, dass sie durchaus immer auf das JFrame gelegt wurde.

Ich habe jetzt einfach mal den Aufruf der repaint()-Methode des JFrames durch paintAll(frame.getGraphics()) ersetzt und, oh Wunder: jetzt scheint es jedesmal zu funktionieren.
Ich finde die Situation aber äußerst unbefriedigend, weil ich nicht wirklich verstehe, wo es vorher gehakt hat.

Hat jemand eine Idee, wie ein solches Verhalten zu erklären ist?
 
Arg
Ich hatte das validate() vergessen.
Verstehe zwar immer noch nicht, wieso es manchmal trotzdem funktionierte, aber nun gut...
 
Zurück