JPanel wird erst neu gezeichnet nach erneuter auswahl

Riedelinho

Mitglied
Ich hab ein Problem mit JPanels und dem neu zeichnen von diesen...
Und zwar:

Ich wähle in meiner GUI einen bestimmten Menüpunkt aus, darauf hin verändert sich ein anderes Menü (JPanel) und zeichnet sich neu, bzw. sollte sich neuzeichnen.
Ich entferne es also erst vom Frame. Setze es neu mit den anzuzeigenden Elementen und dann ruf ich revalidate auf. Bei 2 JPanels funktioniert das wunderbar...bei anderen 2 JPanels werden sie allerdings erst neugezeichnet, wenn ich in irgendwelchen Menüs irgendwas auswähle...

wo könnte das problem liegen?
 
nach GUI-Änderungen
validate();
repaint();
ausführen, am sichersten auf höchster Ebene am JFrame
 
wenn ich das mainframe (also da wo alle panels untergebracht sind) repainte zeichnet der ein panel nicht mehr...

und was is der unteschied zwischen repaint(), validate() und revalidate() ?
 
da hätte ich auch selbst drauf kommen können danke ^^
aber das problem ist, ich hab den ganzen kram noch nit so wirklich verstanden...auch nicht nach durchlesen der docs etc.
deswegen hab ich diese frage gestellt...

zu meinem anderen problem:
wenn ich nur das panel was geupdatet werden soll validate verändert sich erst nach auswahl etwas...
wenn ich dann allerdings daraufhin das frame validate und repainte funktioniert das ganze...
ich will aber nicht jedes mal, wenn ich das panel update den kompletten frame (alle restlichen panels) mit repainten...(mir kommt es auch auf performance an)

irgend ein lösungsvorschlag?
 
>> ausführen, am sichersten auf höchster Ebene am JFrame

das solltest du beherzigen bzw. solltest du vom übergeordneten Container validate/repaint aufrufen, dann sollte es klappen.
 
das komische an dieser sache ist ja folgende:
ich hab auf dem frame mehrere jpanels liegen und EIN JScrollPane mit einem jpanel drin...das wiederrum viele jpanels enthält
wenn ich nun irgendwas auf den normalen jpanels ändere reicht ein normales revalidate von diesen jpanels um sie neu zu zeichnen...
wenn sich allerdings in dem jscrollpane etwas ändert reicht es nicht wenn ich in dem panel darin revalidate aufrufe, sondern muss gleich das ganze frame neuzeichnen, das ist aber nicht sinn der sache, weil, wenn ich ein einziges kleines jpanel darin ändere, will ich ja nicht das komplette jframe neuzeichnen...

hm?!
 
ich kann deine Frage nachvollziehen, aber mit solchen Details beschäftigen sich eben eher wenige,
deshalb ist es nicht so leicht, dafür eine Antwort zu bekommen
 
okay es lag wohl echt am scrollpanel...hab es mal ohne das ausprobiert, also direkt das sich darin befindliche panel auf das frame gesetzt, das lässt sich ohne frame neuzeichnen updaten...
 

Zurück
Oben