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("Demonstring 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);
if(result==JFileChooser.CANCEL_OPTION)
file=null;
else
file=fileChooser.getSelectedFile();
}
private void createPlayer()
{
if(file==null)
return;
removePreviousPlayer();
try{
player=Manager.createPlayer(file.toURL());
player.addControllerListener(new EventHandler());
player.start();
}
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);
}
}
);
}
private class EventHandler implements ControllerListener{
public void controllerUpdate(ControllerEvent e){
if (e instanceof RealizeCompleteEvent){
Container c=getContentPane();
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();
}
}
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น