# Applet Neustart verhindern bei Neuzeichnen v. Browserfenster



## javajoe (19. Apr 2006)

Ich möchte verhindern, dass mein Applet immer wieder neu gestartet wird, wenn das Browserfenster neugezeichnet werden muss. Das ist z. B. der Fall, wenn man von einem anderen Fenster/Programm in das Browserfenster wechselt. Mein Applet startet dann immer wieder neu, was ich verhindern will, da die Animationen und Sounds, die das Applet abspielt, nicht noch einmal abgespielt werden sollen.  Hat jemand eine Idee?


----------



## The_S (19. Apr 2006)

Ein Applet wird normalerweiße nicht neugestartet wenn es eigentlich nur neugezeichnet werden muss. Gib ma pls Code.


----------



## javajoe (19. Apr 2006)

Ich habe mal zu Demo Zwecken ein kleines Applet gebastelt, dass bloß ein Soundfile abspielt. Damit besteht das gleiche Problem: Wenn ich zurück ins Browserfenster wechsle wird der Sound abgespielt. Das Applet:


```
import java.applet.AudioClip;
import java.awt.*;

import javax.swing.JApplet;

public class Reload extends JApplet {	
	AudioClip onSound;	
	public void playOnSound() {			
		onSound = getAudioClip(getCodeBase(), "on.wav");					
		if (onSound != null) {					
			onSound.play();						
		}
		else showStatus("Konnte Sound nicht spielen!");
		onSound = null;
	}
	
	public void init() {			
		setBackground(Color.white);		
	}
		
	public void paint(Graphics screen) {		
		Graphics2D screen2D = (Graphics2D)screen;							
		playOnSound();	
	}
}
```

Die html Seite:

```
<html>
<div align="Center">
<applet code="Reload.class" height="10" width="10">
</applet>
</div>
</html>
```


----------



## The_S (19. Apr 2006)

Öhm, das liegt daran dass du die playOnSound Methode in der paint Methode aufrufst und diese wird natürlich immer aufgerufen wenn das Applet neu gezeichnet werden soll.


----------



## L-ectron-X (19. Apr 2006)

Der Browser zeichnet die Applet-Oberfläche neu, wenn du zu der Seite zurückkehrst.
Da dein Aufruf der Abspiel-Methode für den Sound in der paint()-Methode steht, wird diese natürlich auch aufgerufen.
Setze den Aufruf einfach in die init()-Methode und gut is'.


----------



## javajoe (19. Apr 2006)

Klingt logisch. Vielen Dank!


----------

