从jpanel的按钮单击事件调用时,java media player被锁定
我创建了一个面板,里面有一个叫做回放的按钮。 当我点击按钮时,jmf播放器正在播放,但处于锁定状态, 我希望所有的事件,如停止,播放应该在jmf播放器工作从jpanel的按钮单击事件调用时,java media player被锁定,java,swing,Java,Swing,我创建了一个面板,里面有一个叫做回放的按钮。 当我点击按钮时,jmf播放器正在播放,但处于锁定状态, 我希望所有的事件,如停止,播放应该在jmf播放器工作 class MediaPanel extends JPanel{ public MediaPanel( URL mediaURL ,JDialog media){ setLayout( new BorderLayout() ); Manager.setHint( Manager.PLUGIN_PLAYER
class MediaPanel extends JPanel{
public MediaPanel( URL mediaURL ,JDialog media){
setLayout( new BorderLayout() );
Manager.setHint( Manager.PLUGIN_PLAYER , true );
try
{
// create a player to play the media specified in the URL
Player mediaPlayer = Manager.createRealizedPlayer( mediaURL );
// get the components for the video and the playback controls
Component video = mediaPlayer.getVisualComponent();
Component controls = mediaPlayer.getControlPanelComponent();
if ( video != null )
add( video, BorderLayout.CENTER ); // add video component
if ( controls != null )
add( controls, BorderLayout.SOUTH ); // add controls
mediaPlayer.start(); // start playing the media clip
}
catch ( NoPlayerException noPlayerException ){
noPlayerException.printStackTrace();
System.err.println( "No media player found" );
}
catch ( CannotRealizeException cannotRealizeException ){
cannotRealizeException.printStackTrace();
System.err.println( "Could not realize media player" );
}
catch ( IOException iOException ){
iOException.printStackTrace();
System.err.println( "Error reading from the source" );
}
}
}
很可能
mediaPlayer.start()
是一种阻塞方法,这意味着它阻塞了事件调度线程,阻止它更新UI或响应新事件。如果您想轻松更新UI,请尝试将对mediaPlayer.start()
的调用放在单独的线程中,或者甚至放在SwingWorker
中……这是使用JMF播放视频吗?Java FX,VLCJ。。?