Probleme mit Hintergründen in einer Applet

Loire

Grünschnabel
Hallo,

ich hab noch nicht viel Ahnung von Applets. Bin derzeit dabei eine Art Hauptmenü zu basteln. Dieses besteht aus 3 versch. Hintergrundbildern, je nachdem welcher Menüpunkt ausgewählt wurde. Irgendwie funktioniert da aber etwas nicht *g*
Als Test hab ich mal die Variable Curosr, in der gespeichert ist welcher Menüpunkt ausgewählt ist (0 bis 2) ausgegeben, das scheint zu funktionieren, aber er ändert das Hintergrundbild nicht...

Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.net.*;

public class Game extends Applet implements Runnable, KeyListener {
	
	private Image dbImage;
	private Graphics dbg;
	Image backImage;
	private int cursor;
	

    // Nun sollten folgende Methoden implementiert werden

    // init - Methode wird beim Laden des Applets aufgerufen
    public void init() {
    	addKeyListener(this);
    	cursor = 0;
    	backImage = getImage (getCodeBase (), "Graphics/BG0.jpg"); 
    	Dimension d = new Dimension(450, 600);
    	this.setSize(d);
    	
    }
    

    // start - Methode wird nach dem Laden des Applets aufgerufen
    public void start() { 
		// Schaffen eines neuen Threads, in dem das Spiel läuft
		Thread th = new Thread (this);
		// Starten des Threads
		th.start ();
    }

    // Stop - Methode wird beim Verlassen der Seite mit dem Applet aufgerufen
    public void stop() { }

    // Destroy - Methode wird beim endgültigen Verlassen der Internetseite aufgerufen
    public void destroy() { }

    /** Paint - Methode dient dem Zeichnen von Elementen im Applet und wird z.B. bei Bewegung des Browserfensters und durch den Aufruf repaint() aufgerufen */
	public void paint(Graphics g) {
		switch (cursor) {
		case 0:
			backImage = getImage(getCodeBase(), "Graphics/BG0.jpg");
			break;

		case 1:
			backImage = getImage(getCodeBase(), "Graphics/BG1.jpg");			
			break;

		case 2:
			backImage = getImage(getCodeBase(), "Graphics/BG2.jpg");
			break;

		default:
			break;
		}
		
		
		g.drawImage(backImage, 0, 0, this);
    }

	@Override
	public void run() {
		// Erniedrigen der ThreadPriority um zeichnen zu erleichtern
		Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
				
		repaint();

		try
		{
			// Stoppen des Threads für in Klammern angegebene Millisekunden
			Thread.sleep (20);
		}
		catch (InterruptedException ex)
		{
			// do nothing
		}

		// Zurücksetzen der ThreadPriority auf Maximalwert
		Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
		
	}
	
	/** Update - Methode, Realisierung der Doppelpufferung zur Reduzierung des Bildschirmflackerns */
	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);
	}


	@Override
	public void keyPressed(KeyEvent e) {
		switch (e.getKeyCode()) {
		case KeyEvent.VK_UP:
			if (cursor == 0){
				cursor = 2;
				System.out.println(cursor);
				break;
			}
			if (cursor == 1){
				cursor = 0;
				System.out.println(cursor);
				break;
			}
			if (cursor == 2){
				cursor = 1;
				System.out.println(cursor);
				break;
			}
			break;

		case KeyEvent.VK_DOWN:
			if (cursor == 0){
				cursor = 1;
				System.out.println(cursor);
				break;
			}
			if (cursor == 1){
				cursor = 2;
				System.out.println(cursor);
				break;
			}
			if (cursor == 2){
				cursor = 0;
				System.out.println(cursor);
				break;
			}
			
			break;
		default:
			break;
		}
		
	}


	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}


	@Override
	public void keyTyped(KeyEvent e) {
		
		
	}

}

Weiß jemand von euch wo mein Fehler liegen könnte?
 
Zurück