Hallo,
ich frage mich, ob es möglich ist, bestimmte Komponenten vom Neuzeichnen abzuhalten?
Die Situation ist folgende:
In einem JFrame liegt ein JPanel, in welchem ein JPanel liegt, in welchem eine JMF-Player-Komponente (Java Media Framework) liegt.
1. Ebene: JFrame
2. Ebene: 1. JPanel (opaque ist false)
3. Ebene: 2. JPanel (opaque ist false)
4. Ebene: JMF Player
Das Abspielen eines Videos mit der JMF-Player-Komponente ruft zwangsweise permanent (im Abstand von Millisekunden) paintComponent() auf. Dabei werden auch alle ancestors, also JPanel 1. und JPanel 2., zum neuzeichnen aufgefordert, was zu Performanceeinbußen jenseits des Erträglichen führt.
JPanel 1. und JPanel 2. rendern dabei lediglich je eine Hintergrundgrafik in paintComponent(). Es gibt keinerlei Logik in den paintComponent()-Methoden, sondern nur Zeichenanweisungen an das Graphics-Objekt.
Lasse ich paintComponent() in JPanel 1. und JPanel 2. weg, läuft das Video absolut performant. Natürlich möchte ich die Hintergrundgrafiken aber behalten! ;-)
Meine Idee wäre, die JPanels vom Neuzeichnen irgendwie abzuhalten. Ich vermute das ginge mit Hilfe des RepaintManagers, aber gibt es evtl. auch eine andere Möglichkeit?
Vielen Dank für die Mühe!
ich frage mich, ob es möglich ist, bestimmte Komponenten vom Neuzeichnen abzuhalten?
Die Situation ist folgende:
In einem JFrame liegt ein JPanel, in welchem ein JPanel liegt, in welchem eine JMF-Player-Komponente (Java Media Framework) liegt.
1. Ebene: JFrame
2. Ebene: 1. JPanel (opaque ist false)
3. Ebene: 2. JPanel (opaque ist false)
4. Ebene: JMF Player
Das Abspielen eines Videos mit der JMF-Player-Komponente ruft zwangsweise permanent (im Abstand von Millisekunden) paintComponent() auf. Dabei werden auch alle ancestors, also JPanel 1. und JPanel 2., zum neuzeichnen aufgefordert, was zu Performanceeinbußen jenseits des Erträglichen führt.
JPanel 1. und JPanel 2. rendern dabei lediglich je eine Hintergrundgrafik in paintComponent(). Es gibt keinerlei Logik in den paintComponent()-Methoden, sondern nur Zeichenanweisungen an das Graphics-Objekt.
Lasse ich paintComponent() in JPanel 1. und JPanel 2. weg, läuft das Video absolut performant. Natürlich möchte ich die Hintergrundgrafiken aber behalten! ;-)
Meine Idee wäre, die JPanels vom Neuzeichnen irgendwie abzuhalten. Ich vermute das ginge mit Hilfe des RepaintManagers, aber gibt es evtl. auch eine andere Möglichkeit?
Vielen Dank für die Mühe!