Hi,
ich habe schon viele Beiträge rund ums DoubleBuffering gelesen, aber nichts zu meinem Problem gefunden.
So wie ich das verstanden habe, teilen sich in Swing alle Komponenten einen einzigen DoubleBuffer, in den sie zeichnen. Das heißt automatisch auch, wenn im Vordergrund eine Komponente in den Buffer zeichnet, ist der Buffer der Komponenten, die dahinterliegen, kaputt. Gibt es auch die Möglichkeit, mehrere Buffer-Ebenen zu benutzen?
Konkret habe ich folgendes Problem:
Meine Anwendung hat auf oberster Ebene ein LayeredPane. Im Hintergrund ist die (teilweise recht komplexe) Anwendung im Nimbus-LaF, und den Vordergrund nutze ich um Sachen wie Tooltips und transparente Overlays anzuzeigen. So ziemlich jede Komponente ist nicht-Opaque, was die Sache zusätzlich verlangsamt.
Soweit so gut.
Das blöde ist, jedes Mal wenn im Vordergrund ein Panel verschoben oder verändert wird, wird die Region als dirty markiert und der gesamte Hintergrund in dem Bereich muss neu gezeichnet werden. Das ist teilweise ziemlich ruckelig. Die Vordergrundebe hat jedoch mit der Hintergrundebene gar nichts zu tun, daher würde ich gerne dort einfach auf den Buffer der Hintergrundebene zugreifen, so dass die einzelnen Komponenten gar nicht neu gezeichnet werden müssen.
Ist sowas möglich, oder muss ich dafür halb Swing umschreiben und anpassen?
ich habe schon viele Beiträge rund ums DoubleBuffering gelesen, aber nichts zu meinem Problem gefunden.
So wie ich das verstanden habe, teilen sich in Swing alle Komponenten einen einzigen DoubleBuffer, in den sie zeichnen. Das heißt automatisch auch, wenn im Vordergrund eine Komponente in den Buffer zeichnet, ist der Buffer der Komponenten, die dahinterliegen, kaputt. Gibt es auch die Möglichkeit, mehrere Buffer-Ebenen zu benutzen?
Konkret habe ich folgendes Problem:
Meine Anwendung hat auf oberster Ebene ein LayeredPane. Im Hintergrund ist die (teilweise recht komplexe) Anwendung im Nimbus-LaF, und den Vordergrund nutze ich um Sachen wie Tooltips und transparente Overlays anzuzeigen. So ziemlich jede Komponente ist nicht-Opaque, was die Sache zusätzlich verlangsamt.
Soweit so gut.
Das blöde ist, jedes Mal wenn im Vordergrund ein Panel verschoben oder verändert wird, wird die Region als dirty markiert und der gesamte Hintergrund in dem Bereich muss neu gezeichnet werden. Das ist teilweise ziemlich ruckelig. Die Vordergrundebe hat jedoch mit der Hintergrundebene gar nichts zu tun, daher würde ich gerne dort einfach auf den Buffer der Hintergrundebene zugreifen, so dass die einzelnen Komponenten gar nicht neu gezeichnet werden müssen.
Ist sowas möglich, oder muss ich dafür halb Swing umschreiben und anpassen?