Sara: Flickerfrei im JavaApplet

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

  1. hast Du denn auch dieselben Klassen importiert und auch dieselben Variablendeklarationen?

    1. 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

  2. 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

    1. 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 ;-))

      http://developer.java.sun.com/developer/technicalArticles/Interviews/InteractiveJava/double-buffer.html

      viele Grüße

      Axel