Problema con controles del JMF

Carlos
07 de Octubre del 2008
Buenas tardes,
os escribo porque tengo un problema con el JMF (Java Media Framework) que no consigo resolver.
Estoy realizando un reproductor de vídeo y todo funciona bien excepto el tema de los controles.
Lo que hago simplemente es obtener un player con el "Manager.createRealizedPlayer(URL)". Tras esto obtengo el "VisualComponent" y el "ControlPanelComponent" y los añado al reproductor. Hasta aquí todo bien.
El tema es que quiero personalizar el "ControlPanelComponent", es decir, los botones (play, pause, etc), el volumen, la barra de progreso, etc.
Para esto, debo quitar el "ControlPanelComponent" de mi reproductor y añadir los controles manualmente.
Pero todos me devuelven "null" es decir, que el player no soporta estos controles.
Por ejemplo, suponiendo que "mediaPlayer" es mi el player, si hago un:
"Component volumen = mediaPlayer.getGainControl().getControlComponent()"
me devuelve "null".
Esto sería correcto si el vídeo especificado en la URL no tuviera volumen, pero sí lo tiene!
Además, si utilizo el "ControlPanelComponent" sí que me aparece el volumen y puedo modificarlo. Cosa que no ocurre si el vídeo no tiene volumen.
Entonces, qué es lo que pasa??

Por otro lado, no habiendo encontrado solución hasta el momento a este problema, me he dedicado a "crear manualmente" los controles. Por ejemplo, para la barra de progreso, he creado un "JSlider". Le he añadido un "ChangeListener" para que cuando mueva la barra se modifique el "MediaTime" del player (simplemente haciendo un "setMediaTime"). El problema es cómo conseguir que el "JSlider" se vaya moviendo según se va reproduciendo el vídeo. O lo que es lo mismo, cómo conseguir que el "JSlider" continuamente se actualice con el valor del "getMediaTime". Hay alguna forma de hacerlo que no sea con Threads??

Un saludo y muchas gracias