JAVA音乐播放器软件设计汇总.docx
《JAVA音乐播放器软件设计汇总.docx》由会员分享,可在线阅读,更多相关《JAVA音乐播放器软件设计汇总.docx(21页珍藏版)》请在冰豆网上搜索。
JAVA音乐播放器软件设计汇总
佛山科学技术学院
《可视化编程技术》课程设计报告
音乐播放器软件设计
学生姓名:
钟洁文
学号:
2012914232
年级专业:
12级教育技术学
指导老师:
容汝佳
学院:
教育科学学院
广东★佛山
提交日期:
2014年6月
目录
1前言3
2概要设计4
2.1开发环境4
2.2播放器功能4
2.3界面设计4
2.4类的总体5
3详细设计6
3.1类的主要方法6
31.1初始化窗口:
6
3.1.3设计的总体认识13
3.1.4程序流程图13
4运行结果15
5测试分析15
5.1程序运行情况:
16
5.2程序异常处理:
6程序清单:
16
参考文献24
设计总结24
摘要:
该程序是一个简单的音乐播放器,具有良好的界面,使用人员能快捷简单地进行操作。
即时准确地播放需要的音乐文件,对人们的生活有一定的帮助。
可以实现简单的音乐播放器功能,如:
打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充实,交互友好,可以添加多首歌曲目录。
关键字:
java音乐播放器,音乐播放器类,方法,事件
1前言
随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。
文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的播放器,可以实现简单的播放功能,满足日常基本的工作学习和娱乐需要。
Java是由Sun公司开发的新一代纯面向对象的网络编程语言。
其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。
正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。
Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。
Java基本版本叫Java2标准版(Java2StandardEdition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。
Java2移动版(TheJava2MobileEdition,J2ME)包含创建无线Java应用程序的API。
还有Java2企业版(TheJava2Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。
Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。
作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。
Java语言去掉了C++语言的一些容易引起错误的特性。
Java语言的特点有:
面向对象、跨平台、安全性、多线程和图形功能强。
2概要设计
2.1开发环境
开发平台:
MicrosoftWindowsXPProfessionalServicePack2
开发工具:
JBuilder2007+JDK1.6.0_02
2.2播放器功能
功能1:
文件菜单包含打开、循环和退出三个菜单项:
打开:
用户通过该菜单项打开本地音乐文件,听任何用户想听的歌曲;
循环:
通过循环设置,用户可以重复的播放一首喜欢的歌曲;
退出:
退出音乐播放器,及退出该程序。
功能2:
播放控制菜单包含播放、暂停和停止三个菜单项:
播放:
选择歌曲之后,通过点击播放菜单项启动播放器播;
暂停:
暂停当前正在播放的音乐;
停止:
停止当前正在播放的音乐。
功能3:
播放列表菜单则是当向里面添加歌曲之后才能够查看到里面所包含的歌曲目录:
当用户通过文件打开本地音乐文件后,及相当于在播放列表里面添加了歌曲,及形成相应的歌曲播放目录。
功能4:
音量控制键:
可以点击该控键进行音量大小的调节以及是否静音的设。
功能5:
属性查询键:
通过该控键,用户可以查看当前播放音乐的相关属性,如:
歌曲名,歌手,发布时间,所属专辑等等,并获取关于该歌曲的用户所需的相关信息。
2.3界面设计
图2.3播放器器面板
2.4类的总体
public void setupMenu()
publicvoidactionPerformed(ActionEvente)
publicvoiditemStateChanged(ItemEventarg0)
publicstaticvoidmain(String[]args)
publicvoidcontrollerUpdate(ControllerEvente)
3详细设计
3.1类的主要方法
31.1初始化窗口:
publicvoidsetupMenu()
{
Menuf=newMenu("文件");
MenuItemmi=newMenuItem("打开");
CheckboxMenuItemcbmi=newCheckboxMenuItem("循环",false);
MenuItemee=newMenuItem("退出");
f.add(mi);
f.add(cbmi);
f.add(ee);
mi.addActionListener(this);
cbmi.addActionListener(this);
ee.addActionListener(this);
f.addSeparator();
f.addSeparator();
f.addSeparator();
Menul=newMenu("播放列表");
Menuc=newMenu("播放控制");
MenuItemmove=newMenuItem("播放");
MenuItempause=newMenuItem("暂停");
MenuItemstop=newMenuItem("停止");
move.addActionListener(this);
pause.addActionListener(this);
stop.addActionListener(this);
c.add(move);
c.add(pause);
c.add(stop);
c.addSeparator();
c.addSeparator();
c.addSeparator();
MenuBarmb=newMenuBar();
mb.add(f);
mb.add(c);
mb.add(l);
setMenuBar(mb);
}
3.1.2音乐播放窗口机基本功能的实现:
publicvoidactionPerformed(ActionEvente)
{
Stringcufile,selectfile,currentDirectory;
if(e.getActionCommand().equals("退出"))
{
dispose();
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.setVisible(true);
if(fd.getFile()==null)
return;
selectfile=fd.getFile();
currentDirectory=fd.getDirectory();
cufile=currentDirectory+selectfile;
MenuItemmi=newMenuItem(selectfile);
mi.setActionCommand(cufile);
MenuBarmb=getMenuBar();
Menum=mb.getMenu
(2);
mi.addActionListener(this);
m.add(mi);
}
else
{
cufile=e.getActionCommand();
selectfile=cufile;
}
if(player!
=null)
player.close();
try
{
player=Manager.createPlayer(newMediaLocator("file:
"+cufile));
}
catch(Exceptione2)
{
System.out.println(e2);
return;
}
if(player==null)
{
System.out.println("无法创建播放器");
return;
}
first=false;
setTitle(selectfile);
player.addControllerListener(this);
player.prefetch();
}
publicvoiditemStateChanged(ItemEventarg0)
{
}
publicstaticvoidmain(String[]args)
{
newMediaPlayer("播放器");
}
publicvoidcontrollerUpdate(ControllerEvente)
{
Containertainer=getContentPane();
if(einstanceofControllerClosedEvent)
{
if(vc!
=null)
{
remove(vc);
vc=null;
}
}
if(einstanceofEndOfMediaEvent)
{
player.setMediaTime(newTime(0));
if(loop)
player.start();
return;
}
if(einstanceofPrefetchCompleteEvent)
{
player.start();
return;
}
if(einstanceofRealizeCompleteEvent)
{
vc=player.getVisualComponent();
if(vc!
=null)
tainer.add(vc,
BorderLayout.CENTER);
cc=player.getControlPanelComponent();cc.setBackground(Color.blue);
if(cc!
=null)
{
tainer.add(cc,BorderLayout.SOUTH);
if(vc!
=null)
{
pack();
return;
}
Else
{
setSize(300,75);
setVisible(true);
return;
}
}
}
}
3.1.3设计的总体认识
●JAVA设计的摘要
●JAVA设计的目录结构
●JAVA设计的概要和详细设计
●JAVA设计的版权意识
●JAVA设计需要编译的环境
●JAVA设计的实用性
3.1.4程序流程图
4运行结果
图4结果显示
5测试分析
5.1程序运行情况:
该音乐播放器设置了两个窗口,运行程序时打开的初始化欢迎界面,用户可以根据自己的需求进行菜单栏里面的基本操作和相应的设置,当用户添加或者打开音乐播放文件的时候,程序将会显示出第二个音乐文件播放窗口,与此同时,第一个初始化窗口将会自动隐藏,在音乐播放窗口里面用户可以进行相关的音乐播放的控制操作。
当用户进入音乐播放窗口时,该窗口有几个快捷控制的控键:
时间追踪轴:
可以实现播放的前进、后退功能,根据用户需求调节音乐的播放进度等;音量控制:
设置静音,打开扬声器或者调节音量大小;播放列表:
查看当前播放音乐的相关属性。
5.2程序异常处理:
如果已存在一个播放器,则先将其关闭,稍后重新创建创建播放器时需要捕捉一些异常。
当要打开的文件名不存在时,则捕捉异常;当打开的文件格式不被支持时,捕捉异常,提示不能找到播放器。
6程序清单:
importjavax.media.ControllerEvent;
importjavax.media.ControllerListener;
importjavax.media.EndOfMediaEvent;
importjavax.media.PrefetchCompleteEvent;
importjavax.media.RealizeCompleteEvent;
importjavax.media.*;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicvoidsetupMenu()
{
Menuf=newMenu("文件");
MenuItemmi=newMenuItem("打开");
CheckboxMenuItemcbmi=newCheckboxMenuItem("循环",false);
MenuItemee=newMenuItem("退出");
f.add(mi);
f.add(cbmi);
f.add(ee);
mi.addActionListener(this);
cbmi.addActionListener(this);
ee.addActionListener(this);
f.addSeparator();
f.addSeparator();
f.addSeparator();
Menul=newMenu("播放列表");
Menuc=newMenu("播放控制");
MenuItemmove=newMenuItem("播放");
MenuItempause=newMenuItem("暂停");
MenuItemstop=newMenuItem("停止");
move.addActionListener(this);
pause.addActionListener(this);
stop.addActionListener(this);
c.add(move);
c.add(pause);
c.add(stop);
c.addSeparator();
c.addSeparator();
c.addSeparator();
MenuBarmb=newMenuBar();
mb.add(f);
mb.add(c);
mb.add(l);
setMenuBar(mb);
}
publicvoidactionPerformed(ActionEvente)
{
Stringcufile,selectfile,currentDirectory;
if(e.getActionCommand().equals("退出"))
{
dispose();
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.setVisible(true);
if(fd.getFile()==null)
return;
selectfile=fd.getFile();
currentDirectory=fd.getDirectory();
cufile=currentDirectory+selectfile;
MenuItemmi=newMenuItem(selectfile);
mi.setActionCommand(cufile);
MenuBarmb=getMenuBar();
Menum=mb.getMenu
(2);
mi.addActionListener(this);
m.add(mi);
}
else
{
cufile=e.getActionCommand();
selectfile=cufile;
}
if(player!
=null)
player.close();
try
{
player=Manager.createPlayer(newMediaLocator("file:
"+cufile));
}
catch(Exceptione2)
{
System.out.println(e2);
return;
}
if(player==null)
{
System.out.println("无法创建播放器");
return;
}
first=false;
setTitle(selectfile);
player.addControllerListener(this);
player.prefetch();
}
publicvoiditemStateChanged(ItemEventarg0)
{
}
publicstaticvoidmain(String[]args)
{
newMediaPlayer("播放器");
}
publicvoidcontrollerUpdate(ControllerEvente)
{
Containertainer=getContentPane();
if(einstanceofControllerClosedEvent)
{
if(vc!
=null)
{
remove(vc);
vc=null;
}
}
if(einstanceofEndOfMediaEvent)
{
player.setMediaTime(newTime(0));
if(loop)
player.start();
return;
}
if(einstanceofPrefetchCompleteEvent)
{
player.start();
return;
}
if(einstanceofRealizeCompleteEvent)
{
vc=player.getVisualComponent();
if(vc!
=null)
tainer.add(vc,
BorderLayout.CENTER);
cc=player.getControlPanelComponent();cc.setBackground(Color.blue);
if(cc!
=null)
{
tainer.add(cc,BorderLayout.SOUTH);
if(vc!
=null)
{
pack();
return;
}
Else
{
setSize(300,75);
setVisible(true);
return;
}
}
}
}
参考文献
林良信《JavaJDK6学习笔记》
刘浦迎谢春《java程序设计实用教程》科学出版社
张白一崔尚林《面向对象程序设计—java》西安电子科技大学出版社
潘浩李芙玲《Java程序设计》清华大学出版社
设计总结
经过一个学期的JAVA学习,对JAVA编程有了一定的认识,在做这个课程设计的时候,刚开始感觉自己无从下手,不知道该怎么开始,很茫然。
最终利用网络资源和查阅图书馆的书籍,在傅老师和同学的指导和讨论下,经过一段时间终于完成了这个设计。
当程序运行结束看到弹出的计算器的界面时,感到很欣慰,虽然只是一个小小的东西,但却是自己起步的成就,从中学到了很多书本知识不能体现的东西,对JAVA的学习有了一定的兴趣。
也通过这次的程序设计感觉到自己平时对于编程实际操作的贫乏,没有把书本上的知识真正的掌握牢固。
在做写程序实现功能的过程中,界面和基本功能的设计需要较强的逻辑思维,一不小心就容易出错,在具体的功能设计和实现的过程中要尽可能用最简单的语句实现基本的播放器功能。
我觉得可以设计更多的菜单及菜单项目从而实现更多的功能,如:
删除,保存等,还可以实现更多的背景效果或者更多可选择的皮肤,还可以对按钮添加音效效果,这样感觉整个音乐播放器更具有灵活性,媒体感更强烈一些,界面会更加丰富和生动一些。
通过自己做课程设计,自己设计界面,功能和设计功能的代码实现,将理论知识运用到实际操作中,加深了对理论知识的理解和记忆,在做程序设计的过程中,对很多代码的多次操作和重复使用,使得对很多基本的代码和相关的操作能够牢固的记忆。