第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共9页//程序所用到的各种程序包importjava.awt.BorderLayout;importjava.awt.CheckboxMenuItem;importjava.awt.Color;importjava.awtxponent;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;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;//本程序对应的类;第2页共9页第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共9页classMediaPlayerextendsJFrameimplementsActionListener,ControllerListener,ItemListener{//MediaPlayer类的变量成员的声明;//JMF提供的播放器对象;Playerplayer;Componentvc,cc,gcc;GainControlgc;//first值用来控制在刚开始程序时显示一幅欢迎界面;loop用以标记是否循环播放;booleanfirst=true,loop=false;//设立一个字符串记录当前打开文件的路径StringcurrentDirectory;MediaPlayer(Stringtitle){super(title);//利用一个adapter实现对用户点击窗口系统菜单的关闭按钮//时的响应;addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){//调用dispose以执行windowCloseddispose();}publicvoidwindowClosed(WindowEvente){if(player!=null)player.close();System.exit(0);}});//调用设置程序菜单栏的方法成员完成菜单的布置setupMenu();setSize(400,400);setVisible(true);}//本方法用以设置程序菜单栏publicvoidsetupMenu(){//设置一个菜单第3页共9页第2页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共9页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("播放控制");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);第4页共9页第3页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第4页共9页//将构造完成的菜单栏交给当前程序的窗口;setMenuBar(mb);}//事件响应成员;捕捉发送到本对象的各种事件;publicvoidactionPerformed(ActionEvente){//设一个字符串用于暂存打开的媒体文件的路径;Stringcufile,selcectfile;if(e.getActionCommand().equals("退出")){//调用dispose以便执行windowCloseddispose();return;}//次事件表明用户选择了"播放"菜单命令;//如果当前有一个文件可以播放则执行播放命令;if(e.getActionCommand().equals("播放")){if(player!=null){player.start();}return;}//如果当...