版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业物业安全管理与服务标准(标准版)
- 财务绩效考核与奖惩制度
- 办公室员工培训课程研发制度
- 办公室公务接待与礼仪制度
- 养老院环境卫生管理制度
- 2026年深圳市龙岗区南湾街道和谐家园花园幼儿园招聘备考题库及一套完整答案详解
- 养老院入住老人遗物保管与处理制度
- 2026年雄安高新区建设发展有限公司公开招聘10人备考题库及答案详解1套
- 2026年重庆大学实验室及设备管理处劳务派遣工作人员招聘备考题库及完整答案详解一套
- 2026年深圳市南山区教苑幼儿园招聘备考题库及答案详解参考
- 混塔预制施工方案
- 2025年南京市事业单位招聘考试教师体育学科专业知识试题
- Beyond乐队介绍课件
- 2025至2030低温蒸发器行业发展趋势分析与未来投资战略咨询研究报告
- 企业薪资和经济效益挂钩考核办法
- 员工隐私安全意识培训课件
- 预防接种规范知识培训课件
- DB 5303∕T 23-2024 《露地甜樱桃种植技术规程》
- 《微压富氧康养整体空间设备》
- 卫星互联网基础知识培训课件
- 2025年敖汉旗就业服务中心招聘第一批公益性岗位人员的112人模拟试卷含答案详解
评论
0/150
提交评论