Si tiene el control de la implementación del applet (es decir, la página web que aloja el applet), puede escribir su propio Applet Launcher. El iniciador funciona como un contenedor que proporciona un entorno personalizado para el applet real. El iniciador crea una instancia del applet real y le pasa versiones personalizadas del entorno de applet (AppletStub, AppletContext). El entorno personalizado implementa AudioClip como una interfaz de "no hacer nada".
Para desactivar el sonido, que podría anular el AppletContext así:
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() { }
}
También sobrescribimos AppletStub, ya que es donde el applet obtiene el AppletContext de
class CustomAppletStub implements AppletStub
{
AppletStub realStub;
public AppletContext getAppletContext()
{
return new CustomAppletContext(realStub.getAppletContext());
}
}
Y luego, su lanzador :
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));
}
}
Parece un montón de código, pero en realidad es sólo af Nuevas clases y principalmente cableado solo para inyectar una nueva implementación de DummyAudioClip.
HTH!
Esto suena más como una pregunta de configuración de Linux que una pregunta de programación. – Pool