importjava.awt.BorderLayout;importjava.awt.CheckboxMenuItem;importjava.awt.Color;
importjava.awt.Component;importjava.awt.Container;importjava.awt.FileDialog;importjava.awt.Font;importjava.awt.FontMetrics;importjava.awt.Graphics;importjava.awt.Menu;importjava.awt.MenuBar;importjava.awt.MenuItem;
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.ItemEvent;importjava.awt.event.ItemListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.awt.Image;importjava.util.*;importjava.io.*;
importjavax.swing.ImageIcon;
importjavax.media.ControllerClosedEvent;importjavax.media.ControllerEvent;importjavax.media.ControllerListener;importjavax.media.EndOfMediaEvent;importjavax.media.GainControl;importjavax.media.Manager;
importjavax.media.MediaLocator;importjavax.media.NoPlayerException;importjavax.media.Player;
importjavax.media.PrefetchCompleteEvent;importjavax.media.RealizeCompleteEvent;importjavax.media.Time;importjavax.swing.JFrame;
//本程序对应的类;classMediaPlayer
extendsJFrame
implementsActionListener,ControllerListener,ItemListener{
//MediaPlayer类的变量成员的声明;//JMF提供的播放器对象;
Playerplayer;
Componentvc,cc,gcc;GainControlgc;Filef;
//first值用来控制在刚开始程序时显示一幅欢迎界面;loop用以标记是否循环播放;booleanfirst=true,loop=false;
//设立一个字符串记录当前打开文件的路径StringcurrentDirectory;
MediaPlayer(Stringtitle{super(title;
//利用一个adapter实现对用户点击窗口系统菜单的关闭按钮//时的响应;
addWindowListener(newWindowAdapter({
publicvoidwindowClosing(WindowEvente{//调用dispose以执行windowCloseddispose(;}
publicvoidwindowClosed(WindowEvente{if(player!=nullplayer.close(;System.exit(0;}};
//调用设置程序菜单栏的方法成员完成菜单的布置setupMenu(;
setSize(400,400;setVisible(true;}
//本方法用以设置程序菜单栏publicvoidsetupMenu({
//设置一个菜单
Menuf=newMenu("文件";
//往设置的菜单种添加菜单项
MenuItemmi=newMenuItem("打开";mi.addActionListener(this;f.add(mi;
f.addSeparator(;
CheckboxMenuItemcbmi=newCheckboxMenuItem("循环",false;cbmi.addItemListener(this;f.add(cbmi;f.addSeparator(;
mi=newMenuItem("退出";mi.addActionListener(this;f.add(mi;
Menul=newMenu("播放列表";
Menuc=newMenu("播放控制";Menus=newMenu("播放文件大小";Menuq=newMenu("关于。。";
MenuIteminformation=newMenuItem("李军飞制作";q.add(information;
MenuItemsize=newMenuItem("播放";
MenuItemmove=newMenuItem("播放";move.addActionListener(this;c.add(move;
c.addSeparator(;
MenuItempause=newMenuItem("暂停";pause.addActionListener(this;c.add(pause;
c.addSeparator(;
MenuItemstop=newMenuItem("停止";stop.addActionListener(this;c.add(stop;
c.addSeparator(;
//设置一个菜单栏
MenuBarmb=newMenuBar(;
//将设置的菜单依次加入程序的菜单栏中去mb.add(f;mb.add(c;mb.add(l;mb.add(s;
mb.add(q;
//将构造完成的菜单栏交给当前程序的窗口;setMenuBar(mb;}
//事件响应成员;捕捉发送到本对象的各种事件;publicvoidactionPerformed(ActionEvente{
//设一个字符串用于暂存打开的媒体文件的路径;Stringcufile,selcectfile;
if(e.getActionCommand(.equals("退出"{//调用dispose以便执行windowCloseddispose(;return;}
//次事件表明用户选择了"播放"菜单命令;
//如果当前有一个文件可以播放则执行播放命令;if(e.getActionCommand(.equals("播放"{if(player!=null{player.start(;}
return;}
//如果当前正在播放某一文件,则执行暂停;if(e.getActionCommand(.equals("暂停"{
if(player!=null{player.stop(;