Java JMF:无法在未实现的控制器上设置媒体时间

Java JMF:无法在未实现的控制器上设置媒体时间,java,jmf,Java,Jmf,我尝试使用JMF在每次按下按钮时播放声音 这就是我必须构建媒体播放器的内容: MediaPlayer mp = new javax.media.bean.playerbean.MediaPlayer(); mp.setMediaLocation("file:///D:/fall.wav"); mp.setPlaybackLoop(false); 而且,要播放一次声音,我会 mp.start(); mp.setMediaTime(new Time(0)); mp.stop(); 我第一次播放这

我尝试使用JMF在每次按下按钮时播放声音

这就是我必须构建媒体播放器的内容:

MediaPlayer mp = new javax.media.bean.playerbean.MediaPlayer();
mp.setMediaLocation("file:///D:/fall.wav");
mp.setPlaybackLoop(false);
而且,要播放一次声音,我会

mp.start();
mp.setMediaTime(new Time(0));
mp.stop();
我第一次播放这个声音时,我得到了一个

javax.media.NotRealizedError: Cannot set media time on a unrealized controller 

Exception in thread AWT-EventQueue-0" javax.media.NotRealizedError: 
  Cannot set media time on a unrealized controller 
在setMediaTime行上。这不会在我按下发出声音的按钮后发生,它只在第一次发生。如果我更改构造函数并添加

mp.realize();
最后,它不会抛出这些错误,但也不会第一次播放声音

如何解决此问题?

mp.start()
是异步的。因此,当您调用
mp.setMediaTime(新时间(0))时
在调用
start()
之后,播放器尚未实现。 您可以添加一个
ControllerListener
并监听其事件。一旦获得
RealizedEvent
,然后设置媒体时间。最好先调用
mp.realize()
,在获得事件后,设置媒体时间,然后调用
start()