音乐播放器Java课程设计报告_第1页
音乐播放器Java课程设计报告_第2页
音乐播放器Java课程设计报告_第3页
音乐播放器Java课程设计报告_第4页
音乐播放器Java课程设计报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java程序设计课程设计报告 题目:音乐播放器 学院:计算机科学与工程学院 专业:信息管理与信息系统 学生姓名:杨柏昌 学号:1400320228 指导老师:汪华登 目 录1. 概要设计.2. 详细设计.3. 测试.4. 总结. 概 要 设 计播放器主要使用jmf框架实现,播放器界面如下 详 细 设 计package design.curriculum.java;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.border;import java.io.*;impo

2、rt javax.media.*;public class jmfplayer extends jframe implements actionlistener,controllerlistenerplayer player=null;/声明一个player对象string filepath;/存放音乐文件夹所在目录string filename;/存放歌曲名称boolean click=false;/用来标记歌曲是否被点击int songindex;/歌曲元素在列表中的位置int loop=3;/作为播放模式的标记jlabel songnamelable;jradiobutton seque

3、ncebtn;jradiobutton singlebtn;jradiobutton randombtn;buttongroup loopgroup;jbutton beforebtn;jbutton nextbtn;jbutton playbtn;jbutton pausebtn;jbutton stopbtn;jbutton filebtn;jbutton exitbtn;component controlcomponent;/player的控制面板container container;jpanel songnamejp;jpanel loopjp;jpanel btnjp;jpanel

4、 listjp;jpanel btn2jp;list list;public jmfplayer()super(音乐播放器);setbounds(480,50,400,600);setresizable(false);/设置界面不可修改setvisible(true); container=getcontentpane();/获得容器主面板container.setlayout(new boxlayout(container,boxlayout.y_axis);songnamejp=new jpanel(new gridlayout(2,2);songnamejp.setsize(400,50

5、);container.add(songnamejp);songnamelable=new jlabel(正在播放:未选取歌曲);songnamejp.add(songnamelable);songnamejp.setborder(borderfactory.createetchedborder();loopjp=new jpanel();loopjp.setsize(400,50);container.add(loopjp);sequencebtn=new jradiobutton(顺序播放);sequencebtn.addactionlistener( new actionlistener

6、() public void actionperformed(actionevent evt) loop = 1; );singlebtn=new jradiobutton(单曲循环);singlebtn.addactionlistener( new actionlistener() public void actionperformed(actionevent evt) loop = 0; ); randombtn=new jradiobutton(随机播放);randombtn.addactionlistener( new actionlistener() public void acti

7、onperformed(actionevent evt) loop = 2; );loopgroup=new buttongroup();loopgroup.add(sequencebtn);loopgroup.add(singlebtn);loopgroup.add(randombtn);loopjp.add(sequencebtn);loopjp.add(singlebtn);loopjp.add(randombtn);btnjp=new jpanel();btnjp.setlayout(new boxlayout(btnjp,boxlayout.x_axis);btnjp.setsize

8、(400,50);container.add(btnjp);beforebtn=new jbutton(上一首);playbtn=new jbutton(播放);pausebtn=new jbutton(暂停);stopbtn=new jbutton(停止);nextbtn=new jbutton(下一首);beforebtn.addactionlistener(this);playbtn.addactionlistener(this);pausebtn.addactionlistener(this);stopbtn.addactionlistener(this);nextbtn.addact

9、ionlistener(this);btnjp.add(beforebtn);btnjp.add(playbtn);btnjp.add(pausebtn);btnjp.add(stopbtn);btnjp.add(nextbtn);listjp=new jpanel(new borderlayout();listjp.setsize(300,300);container.add(listjp);border border = borderfactory.createetchedborder(); border titled = borderfactory.createtitledborder(

10、border, 歌曲列表); listjp.setborder(titled); filebtn=new jbutton(选择文件夹); exitbtn=new jbutton(退出); filebtn.addactionlistener(this); exitbtn.addactionlistener(this); btn2jp=new jpanel(); btnjp.setsize(300,50); container.add(btn2jp); btn2jp.add(filebtn); btn2jp.add(exitbtn); list=new list(); list.setbackgr

11、ound(color.pink); jscrollpane songlistscroll = new jscrollpane(list); listjp.add(songlistscroll, borderlayout.center); list.addmouselistener(new mouseadapter() /对歌曲点击的监听public void mouseclicked(mouseevent e) if (e.getclickcount() = 1) filename = list.getselecteditem(); songindex=list.getselectedinde

12、x(); click=true; ); addwindowlistener (new windowadapter() public void windowclosing(windowevent e) if(player!=null) player.stop();player.deallocate(); system.exit(0); ); validate(); /* * 对按钮事件的处理 */public void actionperformed(actionevent e) if(e.getsource()=filebtn) filedialog dialog=new filedialog

13、(this,音乐,filedialog.load); dialog.setvisible(true); filepath = dialog.getdirectory(); if (filepath != null) file filedir = new file(filepath);file filelist = filedir.listfiles();for (file file : filelist) string filename = file.getname().tolowercase();if (filename.endswith(.wav)|filename.endswith(.m

14、p3) list.add(filename); if(e.getsource()=playbtn) if(click) click=!click; try if(player!=null) player.stop(); player.deallocate(); if(controlcomponent!=null) songnamejp.remove(controlcomponent); songnamejp.validate(); player=manager.createplayer(new medialocator(file:+filepath+filename); player.getd

15、uration(); player.prefetch(); player.addcontrollerlistener(this); songnamelable.settext(filename); catch (ioexception e3) catch(noplayerexception e2) else if(!click) player.start(); if(e.getsource()=exitbtn) system.exit(0); if(e.getsource()=pausebtn) if(player!=null) player.stop(); if(e.getsource()=

16、stopbtn) if(player!=null) player.stop(); player.setmediatime(new time(0); else return; if(e.getsource()=beforebtn) int n=list.getitemcount(); if(songindexn) songindex=songindex-1; if(songindex0) songindex=n-1; filename=list.getitem(songindex); run(); if(e.getsource()=nextbtn) int n=list.getitemcount

17、(); if(songindex=n) songindex=0; filename=list.getitem(songindex); run(); public void run() try if(player!=null) player.stop(); player.deallocate(); if(controlcomponent!=null) songnamejp.remove(controlcomponent); songnamejp.validate(); player=manager.createplayer(new medialocator(file:+filepath+file

18、name); player.getduration(); player.prefetch(); player.addcontrollerlistener(this); songnamelable.settext(filename); catch (ioexception e3) catch(noplayerexception e2) /* * 对控制面板事件的处理 * */ public synchronized void controllerupdate(controllerevent event) if(event instanceof realizecompleteevent) if(controlcomponent=player.getcontrolpanelcomponent()!=null) songnamejp.add(controlcomponent); else if(event instanceof prefetchcompleteevent) player.start(); else if(event insta

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论