Flickerfrei im JavaApplet
Sara
- java
0 coldarchon0 Sara
0 Slyh
Hi
Um ein flickerfreies Bild in einem Java Applet darzustellen lese ich überall, dass man ein Buffer-Bild benutzen soll.
Wie hier zum Beispiel:
http://javaboutique.internet.com/tutorials/Java_by_Example/section3_6.html
Ich habe mehrere Quellen gefunden die alle die gleiche Methode benutzen, doch sobald ich
//create graphics buffer, the size of the applet
Buffer=createImage(size().width,size().height);
gBuffer=Buffer.getGraphics();
versuche gibt er mir ein NullPointerException ?
Hat das mir einer neuen Java Version zu tun ? Ich arbeite mit Java 1.4.1
Vielen Dank für eure Antworten
Sara
hast Du denn auch dieselben Klassen importiert und auch dieselben Variablendeklarationen?
hast Du denn auch dieselben Klassen importiert und auch dieselben Variablendeklarationen?
Ja, natürlich.
Es sind nur diese zwei Zeilen die mir Probleme bereiten. Die zweite löst die NullPointer Exception aus.
Buffer=createImage(size().width,size().height);
gBuffer=Buffer.getGraphics();
Ich weiss nicht warum, es ist eine Methode (double buffer) die ich überall sehe, aber im java 1.4.1 scheint sie nicht mehr zu funktionnieren.
Danke für deine Antwort
Sara
Hallo,
Buffer=createImage(size().width,size().height);
gBuffer=Buffer.getGraphics();versuche gibt er mir ein NullPointerException ?
Vermutlich wird das Applet in dem Moment, in dem du createImage(int, int)
aufrufst, noch nicht angezeigt. Wenn dem so ist, wird "null" zurück
geliefert. Und genau das verursacht die NullpointerException eine Zeile
tiefer. (-> null.getGraphics();)
Lösung: Erzeuge den Backbuffer erst beim ersten Aufruf von paint().
Ungefähr so:
if (buffer == null) {
buffer = createImage(size().width, size().height);
}
Übrigens solltest du dir unbedingt mal die Java Code Conventions
durchlesen, und dich an die dort formulierten Regeln halten. Beispielweise
ist es keine so gute Idee den ersten Buchstaben von Variablennamen
mal groß und klein zu schreiben.
Gruß
Slyh
Hallo,
kleiner Zusatz zu Slyh:
Hier hat sich jemand über so etwas schon mal Gedanken gemacht. Man muss ja nicht alles immer wieder neu erfinden ;-))
viele Grüße
Axel