音乐播放器Java专业课程设计方案报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计汇报课程设计题目: java音乐播放器
学生姓名:
专业: XXXXXXXXXXXXX
班级:
指导老师:
20XX年X月X日
一、课程设计目标
1.编程设计音乐播放软件, 使之实现音乐播放功效。

2.培养学生用程序处理实际问题能力和爱好。

3.加深java中对多媒体编程应用。

二、课程设计要求
利用学到编程知识和编程技巧, 要求学生:
1.系统设计要能完成题目所要求功效, 设计软件能够进行简单播放及其它基础功效。

2、编程简练, 可用, 尽可能使系统功效愈加完善和全方面
3.说明书、步骤图要清楚。

三、课程设计内容
1.课程设计题目及介绍
音乐播放软件要求:
有图形界面, 能播放MP3歌曲, 有播放列表, 前一首、后一首等常见播放软件功效。

2.设计说明
关键利用多媒体编程、图形界面、数组及循环进行设计, 从而实现简单音乐播放。

public MyMusicPlayer(): 实现窗口组员方法
publi c void run(): 实现改变歌曲播放状态组员方法
public AudioClip loadSound(String filename): 实现对声音加载public void mouseClicked(MouseEvent e): 实现对按钮监听
public void itemStateChanged(ItemEvent arg0): 返回一个
AudioClip对象
3.程序步骤图
4.程序清单
import java.awt.*;
import javax.swing.*; import java.applet.*; import java.awt.event.*; import .*;
public class MyMusicPlayer extends Thread implements MouseListener,ItemListener{
JFrame MainFrame=new JFrame("MyMusicPlayer"); //定义主窗体
JLabel songname=new JLabel(); //用标签显示状态
JButton last=new JButton();
JButton play=new JButton();
JButton next=new JButton();
JButton loop=new JButton(); //定义上一曲,播放,下一曲,循环四个按钮
JLabel list=new JLabel("播放列表");
List songlist=new List(); //显示歌曲列表
AudioClip[] song=new AudioClip[10]; //将音频文件放在数组中
AudioClip playsong; //目前选定播放音频文件
String[] name={"黄小琥 - 顺其自然.wav","陈奕迅-张氏情
歌.wav","黄小琥 _没那么简单.wav",
"戚薇-假如爱忘了.wav","郭采洁 - 狠狠
哭.wav","test.wav"};
//将全部文件名存放在字符串数组name中
String playname; //目前选定播放音频

int j=0; //统计目前选定播放是哪首歌曲, 默认为第一首
boolean playbutton=true; //统计播放状态, 默认为暂停播放
boolean loopbutton=false; //统计循环状态, 默认为没有循环
Thread thread=new Thread("pl");
static MyMusicPlayer Yu;
public MyMusicPlayer(){
MainFrame.setLayout(null);
MainFrame.setBounds(300,50,310,500);
MainFrame.setVisible(true);
MainFrame.setDefaultCloseOperation(3);
MainFrame.add(songname);
Font sname=new Font("斜体",Font.ITALIC,18);
songname.setFont(sname); //设置显示状态字体为斜体
songname.setText("我音乐播放器");
songname.setBounds(10,10,300,40);
last.setBounds(10,70,50,40);
play.setBounds(70,70,50,40); //设置四个功效键位置和大小
next.setBounds(130,70,50,40);
loop.setBounds(190,70,50,40);
last.setIcon(new ImageIcon("1.png"));
play.setIcon(new ImageIcon("2.png"));
next.setIcon(new ImageIcon("3.png"));
loop.setIcon(new ImageIcon("4.png")); //设置四个功效键图片
last.addMouseListener(this);
play.addMouseListener(this);
next.addMouseListener(this);
loop.addMouseListener(this); //添加按键鼠标监听器
MainFrame.add(last);
MainFrame.add(play);
MainFrame.add(next);
MainFrame.add(loop);
list.setBounds(10,120,100,30);
Font lis=new Font("宋",Font.BOLD,15);
list.setFont(lis); //显示“播放列表”
MainFrame.add(list);
songlist.setBounds(10,150,250,300);
songlist.setBackground(Color.GREEN); //设置播放列表背景色为绿色
songlist.setVisible(true);
songlist.addItemListener((ItemListener) this); //添加列表监听器
MainFrame.add(songlist);
for(int i=0;i<name.length;i++)
{
song[i]=loadSound(name[i]); //逐一获取
音频文件
songlist.add(name[i]); //将
歌曲名添加到播放列表
}
playsong=song[0];
}
public static void main(String[] args){
Yu=new MyMusicPlayer();
Yu.start();
}
public void mouseClicked(MouseEvent e) {
JButton btn=(JButton)e.getSource();
playsong.stop();
if(btn==play)
{ if(playbutton==false)
playbutton=true;
else
playbutton=false; //当按下play后改变播放状态
}
else
if(btn==last)
{ j-=1; //当按下last 后将上一曲选定
if(j<0)
j=name.length-1; //若之前选定为第一首, 则跳到最终一首
playbutton=true;
loopbutton=false;
}
else
if(btn==next)
{ j+=1; //当按下next后将下一曲选定
if(j>=name.length)
j=0; //若之前选定为最终一首, 则跳到第一首
playbutton=true;
loopbutton=false;
}
else
if(btn==loop)
{ if(loopbutton==false)
{
loopbutton=true;
playbutton=true;
}
else
{ //按下loop 后, 改变循环状态和播放状态
loopbutton=false;
playbutton=false;
}
}
if(playbutton==true)
Yu.run();
else
{
songname.setText("暂停播放: "+playname); //暂停播放歌曲
play.setIcon(new ImageIcon("2.png"));
}
}
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub
}
public void itemStateChanged(ItemEvent arg0) { String str=songlist.getSelectedItem();
playsong.stop();
for(int i=0;i<name.length;i++)
if(str==name[i])
{
j=i;
break;
}
Yu.run();
}
public void run(){
playsong=song[j]; //播放状态为播放时playsong.play(); //播放选定歌曲
playname=name[j];
if(loopbutton==true)
{
playsong.loop(); //循环播放选定歌曲
songname.setText("循环播放: "+playname);
}
else
songname.setText("正在播放: "+playname);
songlist.select(j); //播放列表
中选定播放歌曲项目
play.setIcon(new ImageIcon("5.png"));
}
public AudioClip loadSound(String filename){ //
返回一个AudioClip对象
URL url=null;
try{
url=new URL("file:"+filename);
}catch(MalformedURLException e){ }
return Applet.newAudioClip(url);
}
}
5.程序运行结果
四、课程设计总结
经过这几天Java课程设计, 让我知道了做课程设计通常方法, 经过多种努力最终完成了设计要求.这次课程设计基础上含盖了大学十二个月学习到Java语言知识点, 课设题目要求不仅要求对书本知识有较深刻了解, 同时要求程序设计者有较强思维和动手能力。

这次课设使我了解我编程思想和编程技巧, 也再一次熟悉了开发程序过程, 包含构思、设计、编写、调试、修订。

做课程设计不仅让我修补了以前学习漏洞, 也让我跟激发了对程序开发爱好和自信。

创新思维至关关键, 这应该能够借鉴在老师教学工作上, 这不仅让我们写出精简代码, 也有利于开发出高效程序。

五、参考文件
《Java程序设计实用教程》张永常主编。

相关文档
最新文档