播放器

发布时间:   来源:文档文库   
字号:
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(;}return;}

//次事件表明用户选择了"播放"菜单命令;//如果当前有一个文件可以播放则执行播放命令;if(e.getActionCommand(.equals("停止"{if(player!=null{
player.stop(;
player.setMediaTime(newTime(0;}
return;}


//用户选择要播放的媒体文件
if(e.getActionCommand(.equals("打开"{
FileDialogfd=newFileDialog(this,"打开媒体文件",FileDialog.LOAD;fd.setDirectory(currentDirectory;fd.show(;

//如果用户放弃选择文件,则返回if(fd.getFile(==nullreturn;
//保存了所选文件的名称及其全路径名称已被稍后使用//同时设置当前文件夹路径
selcectfile=fd.getFile(;
currentDirectory=fd.getDirectory(;
cufile=currentDirectory+selcectfile;
//将用户选择的文件作为一个菜单项加入播放列表该菜单项"名为"该文件名;//被点击后给出的命令串是该文件的全路径名MenuItemmi=newMenuItem(selcectfile;mi.setActionCommand(cufile;MenuBarmb=getMenuBar(;Menum=mb.getMenu(2;
mi.addActionListener(this;m.add(mi;

f=newFile(fd.getDirectory(+fd.getFile(;doubless=f.length(;//Strings=ss.tostring(;

System.out.print(ss+"sssssssssss";
System.out.print(fd.getDirectory(;
MenuItemda=newMenuItem("文件大小"+ss;//da.setActionCommand("ssssssssssss"+ss;da.setActionCommand("ssssssssssss";//MenuBarmc=getMenuBar(;Menumm=mb.getMenu(3;
da.addActionListener(this;mm.add(da;


}else{
//程序逻辑运行到此表示用户选择了一个"播放列表"中的媒体文件//此时可以通过如下动作获得该文件的全路径名;cufile=e.getActionCommand(;selcectfile=cufile;}

//如果已存在一个播放器,则先将其关闭,稍后重新创建//创建播放器时需要捕捉一些异常;if(player!=nullplayer.close(;
try{
player=Manager.createPlayer(newMediaLocator("file:"+cufile;
}catch(java.io.IOExceptione2{System.out.println(e2;return;
}catch(NoPlayerExceptione2{
System.out.println("不能找到播放器.";return;}
if(player==null{
System.out.println("无法创建播放器.";return;}

first=false;
setTitle(selcectfile;
//设置处理播放控制器实际的对象;player.addControllerListener(this;player.prefetch(;}

//因为实现了"ControllerListener"接口,本方法用于处理媒体播放器传来的事件;publicvoidcontrollerUpdate(ControllerEvente{
Containertainer=getContentPane(;

//调用player.close(ControllerClosedEvent事件出现。//如果存在视觉部件,则该部件应该拆除(为一致起见,
//我们对控制面板部件也执行同样的操作下一次需要时再构造)if(einstanceofControllerClosedEvent{

if(vc!=null{remove(vc;vc=null;}
if(cc!=null{remove(cc;cc=null;}
return;}
//在播放结束时,将播放指针置为文件之首,如果设定了循环播放,则再次启动播放器;
if(einstanceofEndOfMediaEvent{player.setMediaTime(newTime(0;if(loop{
player.start(;}
return;}
//PrefetchCompleteEvent事件发生后调用start,正式启动播放if(einstanceofPrefetchCompleteEvent{player.start(;return;}
//本事件表示由于用于播放的资源已经确定;此时要将媒体的图形conmopnent//(如果有)显示出来,同时将播放器player的控制器显示到窗口里;if(einstanceofRealizeCompleteEvent{
//如果媒体中有图像,将对应图像component载入窗体;vc=player.getVisualComponent(;if(vc!=null
tainer.add(vc,BorderLayout.CENTER;
//将对应控制器component载入窗体;cc=player.getControlPanelComponent(;cc.setBackground(Color.BLUE;if(cc!=null
tainer.add(cc,BorderLayout.SOUTH;
//有一些特殊媒体在播放时提供另外的控制手段,将该控制器一并加入窗口;gc=player.getGainControl(;gcc=gc.getControlComponent(;

if(gcc!=null
tainer.add(gcc,BorderLayout.NORTH;
//根据媒体文件中是否有图像,设定相应的窗口大小if(vc!=null{pack(;return;}else{
setSize(300,75;setVisible(true;return;}
}
}
//菜单状态改变事件的响应函数;
publicvoiditemStateChanged(ItemEvente{loop=!loop;
}
//不执行背景清除操作,以免控制面板部件闪烁
//同时使得本程序在用鼠标拖动窗口时存在一些没有及时重绘的情况,有待改进publicvoidupdate(Graphicsg{paint(g;
}
//本类的main函数,其中构造了本类的一个实例;publicstaticvoidmain(String[]args{newMediaPlayer("简单媒体播放器";}
publicvoidpaint(Graphicsg{
//调用超类Framepaint(方法,该paint(方法将调用Frame包含的各个容器//和部件(包括控制面板部件)的paint(方法。super.paint(g;
//以下代码实现了在开启程序之初显示欢迎界面if(first{
intw=getSize(.width;inth=getSize(.height;

ImageIconicon=newImageIcon("aa.jpg";Imageimg=icon.getImage(;
g.drawImage(img,0,0,w,h,getParent(;}}}

本文来源:https://www.2haoxitong.net/k/doc/262a93f24693daef5ef73d84.html

《播放器.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式