125 lines
2.8 KiB
Java
125 lines
2.8 KiB
Java
|
Demonstrating the Java Media Player
|
||
|
|
||
|
import java.awt.*;
|
||
|
import java.awt.event.*;
|
||
|
import java.io.*;
|
||
|
import javax.swing.*;
|
||
|
import javax.media.*;
|
||
|
|
||
|
public class MediaPlayerDemo extends JFrame
|
||
|
{
|
||
|
private Player player;
|
||
|
private File file;
|
||
|
|
||
|
public MediaPlayerDemo()
|
||
|
{
|
||
|
super( "Demonstrating the Java Media Player" );
|
||
|
|
||
|
JButton openFile = new JButton( "Open file to play" );
|
||
|
openFile.addActionListener( new ActionListener()
|
||
|
{
|
||
|
public void actionPerformed( ActionEvent e )
|
||
|
{
|
||
|
openFile();
|
||
|
createPlayer();
|
||
|
}
|
||
|
});
|
||
|
getContentPane().add( openFile, BorderLayout.NORTH );
|
||
|
|
||
|
setSize( 300, 300 );
|
||
|
show();
|
||
|
}
|
||
|
|
||
|
private void openFile()
|
||
|
{
|
||
|
JFileChooser fileChooser = new JFileChooser();
|
||
|
|
||
|
fileChooser.setFileSelectionMode( JFileChooser.FILES_ONLY );
|
||
|
int result = fileChooser.showOpenDialog( this );
|
||
|
|
||
|
// user clicked Cancel button on dialog
|
||
|
if ( result == JFileChooser.CANCEL_OPTION )
|
||
|
file = null;
|
||
|
else
|
||
|
file = fileChooser.getSelectedFile();
|
||
|
}
|
||
|
|
||
|
private void createPlayer()
|
||
|
{
|
||
|
if ( file == null )
|
||
|
return;
|
||
|
|
||
|
removePreviousPlayer();
|
||
|
|
||
|
try
|
||
|
{
|
||
|
// create a new player and add listener
|
||
|
player = Manager.createPlayer( file.toURL() );
|
||
|
player.addControllerListener( new EventHandler() );
|
||
|
player.start(); // start player
|
||
|
}
|
||
|
catch ( Exception e )
|
||
|
{
|
||
|
JOptionPane.showMessageDialog( this, "Invalid file or location", "Error loading file",
|
||
|
JOptionPane.ERROR_MESSAGE );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void removePreviousPlayer()
|
||
|
{
|
||
|
if ( player == null )
|
||
|
return;
|
||
|
|
||
|
player.close();
|
||
|
|
||
|
Component visual = player.getVisualComponent();
|
||
|
Component control = player.getControlPanelComponent();
|
||
|
|
||
|
Container c = getContentPane();
|
||
|
|
||
|
if ( visual != null )
|
||
|
c.remove( visual );
|
||
|
|
||
|
if ( control != null )
|
||
|
c.remove( control );
|
||
|
}
|
||
|
|
||
|
public static void main(String args[])
|
||
|
{
|
||
|
MediaPlayerDemo app = new MediaPlayerDemo();
|
||
|
|
||
|
app.addWindowListener( new WindowAdapter()
|
||
|
{
|
||
|
public void windowClosing( WindowEvent e )
|
||
|
{
|
||
|
System.exit(0);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// inner class to handler events from media player
|
||
|
private class EventHandler implements ControllerListener
|
||
|
{
|
||
|
public void controllerUpdate( ControllerEvent e )
|
||
|
{
|
||
|
if ( e instanceof RealizeCompleteEvent )
|
||
|
{
|
||
|
Container c = getContentPane();
|
||
|
|
||
|
// load Visual and Control components if they exist
|
||
|
Component visualComponent = player.getVisualComponent();
|
||
|
|
||
|
if ( visualComponent != null )
|
||
|
c.add( visualComponent, BorderLayout.CENTER );
|
||
|
|
||
|
Component controlsComponent = player.getControlPanelComponent();
|
||
|
|
||
|
if ( controlsComponent != null )
|
||
|
c.add( controlsComponent, BorderLayout.SOUTH );
|
||
|
|
||
|
c.doLayout();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|