Das Flackern



  • Ok, um das zu vermeiden habe ich mich an Doppelpufferung versucht. Nur da gibt es ein Problem:

    offScreenImage = createImage((int)size().getWidth(), (int)size().getHeight());
    offScreenGraphics = offScreenImage.getGraphics(); // Fehler

    Ich kriege bei dem Versuch das Graphicsobjekt zu intialisieren immer eine NullpointerException. Was mache ich falsch?



  • offScreenImage wird wohl auf null zeigen. Anders kanns ja nicht sein.



  • Ja, darauf bin ich auch schon gekommen. Aber die Frage ist warum?
    In der Doc steht, dass sowas passiert wenn die Komponente nicht anzeigbar ist, aber ich denke doch das sie es ist.



  • public void update(Graphics g)
    	{
    		//Initialisierung des DoubleBuffers
    		if(dbImage == null)
    		{
    			 dbImage = createImage(this.getSize().width, this.getSize().height);
    			 dbg = dbImage.getGraphics();
    		}
    
    		//Bildschirm im Hintergrund löschen
    		dbg.setColor(getBackground());
    		dbg.fillRect(0, 0, this.getSize().width, this.getSize().height);
    
    		//Auf gelöschten Hintergrund Vordergrund zeichnen
    		dbg.setColor(getForeground());
    		paint(dbg);
    
    		//Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
    		g.drawImage(dbImage, 0, 0, this);	
    	}
    

    das ist die methode die ich immer nutze für doppelbufferung probiers mal aus



  • Mit

    nicht anzeigbar

    ist gemeint, das dein Objekt, welches
    createImage aufruft auch wirklich in einem geöffneten Fenster plaziert ist.
    Dann sollte das gehen.

    Jockel


Anmelden zum Antworten