DoubleBuffer bei Canvas

MikloManuel

Grünschnabel
Hallo,
bin an einem kleinen Applet am programmieren und irgendwie will meine Version des Doublebuffers einfach nicht funktionieren. Hab schon sehr viel versucht...
Immer mit dem Ergebnis, dass beim Bildaufbau trotz Doublebufer das Bild flackert.
Was mach ich denn Falsch?
Kann mir viellecht jemand weiterhelfen?
Hier mal das Codestück welches mir sorgen bereitet...

Code:
private class HiscoreDisplay extends Canvas{
		
		
		/**
		 * Hiscore-Canvas
		 * Version 0.1
		 */
		private static final long serialVersionUID = 1L;

		
		protected HiscoreDisplay(){
			this.setSize(400, 400);
			einlesen();
			checkHiscore();
			//DoubleBuffer
			offgc=offscreen.getGraphics();
		}
		
		public void malen(){
			offgc.drawImage(vorhang, 0, 0, this);
				int y=100;
				for(int i=0;i<10;i++){
					offgc.setFont(new Font("Arial",Font.BOLD,18));
					offgc.setColor(Color.yellow);
					offgc.drawString(name[i],140,y);
					offgc.drawString(""+punkte[i],230,y);
					y+=30;
				}
			
			repaint();
		}
		
		public void update(Graphics g){
			malen();
			paint(g);
			g.drawImage(offscreen,0,0,this);
		}

		public void paint(Graphics g){
			  
			  if (offscreen != null) {
				    g.drawImage(offscreen,0,0,this);
				  }
			  repaint();
		}
	}
 
Was ist denn das Feld offscreen?

Und wenn du dauernd repaint() aufrufst ist das auch kein Wunder. Wozu soll das gut sein in der paint-Methode nochmal repaint aufzurufen. Dann wird immer wieder gemalt und es flackert natürlich.

Kannst ja mal folgendes in deinen Code einfügen:

Java:
public void repaint(){
super.repaint();
System.out.println("repaint");
}

Dann wirst du sehen dass das andauernd aufgerufen wird.
 
Zurück