Hallo,
ich habe eine GUI, die hauptsächlich aus png-bildern besteht. Ich habe eine Klasse ImagePanel, die ein JPanel erweitert und in der paintComponent() eben ein Image zeichnet. weiter nichts.
Auf ein JFrame habe ich dieses ImagePanel, so zu sagen als Hintergrundbild, geaddet.
Auf diesem ImagePanel habe ich nun diverse Komponenten (Drehregler) mit MouseListenern geaddet, die beim drehen ihre eigene repaint() aufrufen.
Nun das Problem:
Leider wird auch jedes Mal das gesamte Hintergrundbild, also dieses ImagePanel neu gezeichnet (ca 150mal pro Sekunde). Manchmal kommt es dabei Aussetzern.
Was ich versucht habe:
setIgnoreRepaint(true) auf dieses ImagePanel bring gar nichts. Kann es sein, dass der Befehl nur repaint-Befehle vom System blockt?
Dann habe ich die Klasse ImagePanel so gestaltet, dass nur 2 mal absolut die paintComponent aufgerufen werden kann. Das Ergebnis ist, dass die Flächen bei den Drehreglern grau geworden sind
Also braucht man anscheinend schon ein repaint()
Hat Jemand ne Idee, was ich noch machen könnte? Mein Ansatz wäre jetzt, das Hintergrundbild in mehrere Teile zu zerlegen, damit nicht alles repaintet werden muss. Aber vielleicht gehts ja auch noch eleganter.
Bin für jede Hilfe sehr dankbar, weil dieses Projekt sehr wichtig ist.
Gruß David
ich habe eine GUI, die hauptsächlich aus png-bildern besteht. Ich habe eine Klasse ImagePanel, die ein JPanel erweitert und in der paintComponent() eben ein Image zeichnet. weiter nichts.
Auf ein JFrame habe ich dieses ImagePanel, so zu sagen als Hintergrundbild, geaddet.
Auf diesem ImagePanel habe ich nun diverse Komponenten (Drehregler) mit MouseListenern geaddet, die beim drehen ihre eigene repaint() aufrufen.
Nun das Problem:
Leider wird auch jedes Mal das gesamte Hintergrundbild, also dieses ImagePanel neu gezeichnet (ca 150mal pro Sekunde). Manchmal kommt es dabei Aussetzern.
Was ich versucht habe:
setIgnoreRepaint(true) auf dieses ImagePanel bring gar nichts. Kann es sein, dass der Befehl nur repaint-Befehle vom System blockt?
Dann habe ich die Klasse ImagePanel so gestaltet, dass nur 2 mal absolut die paintComponent aufgerufen werden kann. Das Ergebnis ist, dass die Flächen bei den Drehreglern grau geworden sind
Also braucht man anscheinend schon ein repaint()
Hat Jemand ne Idee, was ich noch machen könnte? Mein Ansatz wäre jetzt, das Hintergrundbild in mehrere Teile zu zerlegen, damit nicht alles repaintet werden muss. Aber vielleicht gehts ja auch noch eleganter.
Bin für jede Hilfe sehr dankbar, weil dieses Projekt sehr wichtig ist.
Gruß David