JFrame - flackern verhindern

Billie

Erfahrenes Mitglied
Hellas!

So, hab mal wieder zu lange gesucht und finde einfach keine Lösung. Also das Problem des "Bildschirmflackerns" kennt man ja aus der Spiele-Programmierung. Ich hab aber ein einfaches GUI mit Swing. Aber wenn ich den JFrame vergrößere/verkleinere sieht man deutlich das Flackern... ich hab schon sämtliche Paint Methoden überschrieben, die ich gefunden habe. Aus einem mir einem unerklärlichen Grund zeichnet er trotzdem noch alles ganz normal, obwohl er nach meiner Logik gar nichts mehr zeichnen dürfte... Aber so ist das, will man mal was kaputt machen, gehts nicht :)

Also, Swing soll ja das Double Buffering von Haus aus unterstützen. Jedoch kann ich "setDoubleBuffered" nur auf Instanzen der Klasse JComponent anwenden, JFrame ist aber keine Instanz davon. Und wenn ich sämtliche Komponenten auf setDoubleBuffered(true) setzte, mercke ich sowieso keinen Unterschied.

Also, hat jemand eine Idee wie ich das flackern beim Vergrößern/Verkleinern wegbekomme? Oder kennt jemand die Methode, mit der der JFrame gezeichnet wird... evtl. komm ich drauf wenn ich es mal schaffe das Zeichnen des Frames zu unterdrücken. Für mich sieht es nämlich sehr danach aus, als gäbe es immer ein Background-Filling... soll heißen es wird, unnötiger weise (?), der ganze Hintergrund neu gezeichnet.

Danke für alle Kommentare ;)
 
Hallo!

Hilftsvielleicht wenn du während des resize Vorgangs das repainten des JFrames deaktivierst? -> setIgnoreRepaint(true)

Gruß Tom
 
Nein, hilft nicht wirklich.

Ich habe die paint(Graphics g) Methode überschrieben. Diese wird genau dann aufgerufen, wenn die Komponente gerade vergrößert wird. Wenn ich nach dem Vergrößern die Maustaste loslasse, wird repaint aufgerufen.

Eigentlich müsste es doch möglich sein, dadurch dass ich paint(Graphics g) überschrieben habe, das Zeichnen der Komponente selbst zu steuern und eben ein DoubleBuffer System einzubauen. Im Moment blick ich aber nicht mehr durch, ich brauch eine Pause.
 
Zurück