Wenn Sie die Bereitstellung des Applets steuern (z. B. die Webseite, die das Applet hostet), könnten Sie Ihren eigenen Applet Launcher schreiben. Der Launcher fungiert als Wrapper, der dem eigentlichen Applet eine benutzerdefinierte Umgebung zur Verfügung stellt. Der Launcher instanziiert das echte Applet und übergibt ihm angepasste Versionen der Applet-Umgebung (AppletStub, AppletContext). Die benutzerdefinierte Umgebung implementiert AudioClip als eine "nichts tun" -Schnittstelle.
Audio zu deaktivieren, können Sie den Applet wie dies außer Kraft setzen:
class CustomAppletContext implements AppletContext
{
AppletContext realContext;
// most methods delegate to the real context, either directly, or with a little modification to hide the fact that we are using this launcher
public void setStatus(String status)
{
realContext.setStatus(status);
}
// override the getAudioClip to return a dummy clip
public AudioClip getAudioClip(URl url)
{
return new DummyAudioClip();
}
}
// An AudioClip implementation that does nothing
class DummyAudioClip implements AudioClip
{
public void loop() { }
public void play() { }
public void stop() { }
}
Wir auch AppletStub außer Kraft setzen, da dies ist, wo das Applet die Applet von
class CustomAppletStub implements AppletStub
{
AppletStub realStub;
public AppletContext getAppletContext()
{
return new CustomAppletContext(realStub.getAppletContext());
}
}
bekommt Und dann Launchers :
class AppletLauncher extends Applet
{
private Applet realApplet = new NoisyApplet();
// delegate most methods to the applet, but override the stub, to inject our
// AppletContext and AudioClip implementation
public void setAppletStub(AppletStub stub)
{
realApplet.setAppletStub(new CustomAppletStub(stub));
}
}
Es sieht aus wie eine Menge Code, aber es ist wirklich nur af ew Klassen und meist Verdrahtung, nur um eine neue DummyAudioClip-Implementierung zu injizieren.
HTH!
Das klingt eher nach einer Linux-Konfigurationsfrage als nach einer Programmierfrage. – Pool