java 游戏开发学习情境5音乐播放器设计
Java课程设计音乐播放器设计
程序设计课程设计综合实验音乐播放器班级:指导老师:组员:2014年12月2日目录1 程序功能描述 -------------------------------------------------------------------------------- 32 开发环境描述 -------------------------------------------------------------------------------- 33 开发技术介绍 -------------------------------------------------------------------------------- 34 详细设计--------------------------------------------------------------------------------------- 4 4.1功能模块划分 ------------------------------------------------------------------------------------ 4 4.2 用户界面设计 ----------------------------------------------------------------------------------- 54.2.1 歌曲列表面板 --------------------------------------------------------------------------------------------- 54.2.2 播放控制面板 --------------------------------------------------------------------------------------------- 84.2.3 搜索及展示面板 ------------------------------------------------------------------------------------------ 84.3 播放功能实现 ----------------------------------------------------------------------------------- 94.3.1播放歌曲 ---------------------------------------------------------------------------------------------------- 94.3.2 暂停及继续播放 ---------------------------------------------------------------------------------------- 114.3.3 音量控制 ------------------------------------------------------------------------------------------------- 124.3.4 播放模式 ------------------------------------------------------------------------------------------------- 124.3.5 时间进度条 ---------------------------------------------------------------------------------------------- 134.4 歌词展示实现 --------------------------------------------------------------------------------- 144.4.1 加载歌词文件 ------------------------------------------------------------------------------------------- 144.4.2 解析歌词文件 ------------------------------------------------------------------------------------------- 144.4.3 展示歌词 ------------------------------------------------------------------------------------------------- 154.5 搜索网络歌曲资源---------------------------------------------------------------------------- 164.5.1 获取HTML文本 --------------------------------------------------------------------------------------- 164.5.2 解析HTML文本 --------------------------------------------------------------------------------------- 184.5.3 抓取数据描述 ------------------------------------------------------------------------------------------- 204.6 网络歌曲资源处理---------------------------------------------------------------------------- 204.6.1 歌曲资源的载体 ---------------------------------------------------------------------------------------- 204.6.2 歌曲资源的操作 ---------------------------------------------------------------------------------------- 244.7 程序内置的游戏------------------------------------------------------------------------------- 264.7.1 2048 -------------------------------------------------------------------------------------------------------- 264.7.2 贪吃蛇 ---------------------------------------------------------------------------------------------------- 274.7.3 五子棋 ---------------------------------------------------------------------------------------------------- 275程序运行 -------------------------------------------------------------------------------------- 28 6 实验小结-------------------------------------------------------------------------------------- 311 程序功能描述音乐播放器是一种用于播放各种音乐文件的多媒体播放软件。
音乐播放器Java课程设计报告
2、编程简练,可用,尽可能的使系统的功能更加完善和全面
3、说明书、流程图要清楚。
三、课程设计内容
1
音乐播放软件要求:
有图形界面,能播放MP3歌曲,有播放列表,前一首、后一首等常用播放软件 功能。
2
主要运用多媒体编程、 图形界面、数组及循环进行设计,从而实现简单的音
上一曲,播放,下一曲,循环四个按钮
JLabel list =new JLabel("播放列表");
List songlist =new List();//显示歌曲列表
AudioClip[] song =new AudioClip[10];
//将音频文件放在数组中
AudioClip playsong; //当前选定播放的音频文件
乐播放。
public
MyMusicPlayer():实现窗口的成员方法
publi c
void run():实现改变歌曲的播放状态的成员方法
public
AudioClip loadSound(String)
:实现对声音的加载
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
基于java的音乐播放器课程设计报告
Java课程设计报告题目:java音乐播放器姓名学号院系班级专业任课教师1.设计内容及要求能够实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充实,交互友好,可以添加多首歌曲目录一个简单的基于java语言的音乐播放器,菜单栏:文件,播放控制和播放列表,文件菜单包含打开、循环和退出三个菜单项;播放控制菜单包含播放、暂停和停止三个菜单项,播放列表菜单则是当向里面添加歌曲之后才能够查看到里面所包含的歌曲目录。
当播放歌曲时,可以调节音量大小或者设置是否静音;可以查看当前播放音乐的相关属性,如:歌曲名,歌手,发布时间,所属专辑等等。
2.需求分析1、时间跟踪条:根据歌曲播放的进度,控制条自动进行追踪,用户可以随时了解歌曲的播放进度2、音量控制键:可以点击该控键进行音量大小的调节以及是否静音的设置3、属性查询键:通过该控键,用户可以查看当前播放音乐的相属性,获取关于该歌曲的用户所需的相关信息。
4、菜单栏:①文件:打开:用户通过该菜单项打开本地音乐文件,听任何用户想听的歌曲循环:通过循环设置,用户可以重复的播放一首喜欢的歌曲退出:退出音乐播放器,及退出该程序②播放控制:播放:选择歌曲之后,通过点击播放菜单项启动播放器播放音乐暂停:暂停当前正在播放的音乐停止:停止当前正在播放的音乐③播放列表:当用户通过文件打开本地音乐文件后,及相当于在播放列表里面添加了歌曲,及形成相应的歌曲播放目录3.总体设计结合需求分析来看,整个设计包含了简单的菜单栏,根据用户需求设置了三个简单的实现基本操作的菜单,分别是:文件,播放控制,播放列表;根据具体的操作每个菜单还包含了相应的菜单项,文件:打开,循环,退出;播放控制:播放,暂停,停止;播放列表则没有菜单项,该菜单就是用来显示或者查看相应的歌曲目录的。
该音乐播放器设置了两个窗口,运行程序时打开的初始化欢迎界面,用户可以根据自己的需求进行菜单栏里面的基本操作和相应的设置,当用户添加或者打开音乐播放文件的时候,程序将会显示出第二个音乐文件播放窗口,与此同时,第一个初始化窗口将会自动隐藏,在音乐播放窗口里面用户可以进行相关的音乐播放的控制操作。
基于java的音乐播放器课程设计报告 (1)
Java课程设计报告题目:java音乐播放器姓名学号院系班级专业任课教师1.设计内容及要求能够实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充实,交互友好,可以添加多首歌曲目录一个简单的基于java语言的音乐播放器,菜单栏:文件,播放控制和播放列表,文件菜单包含打开、循环和退出三个菜单项;播放控制菜单包含播放、暂停和停止三个菜单项,播放列表菜单则是当向里面添加歌曲之后才能够查看到里面所包含的歌曲目录。
当播放歌曲时,可以调节音量大小或者设置是否静音;可以查看当前播放音乐的相关属性,如:歌曲名,歌手,发布时间,所属专辑等等。
2.需求分析1、时间跟踪条:根据歌曲播放的进度,控制条自动进行追踪,用户可以随时了解歌曲的播放进度2、音量控制键:可以点击该控键进行音量大小的调节以及是否静音的设置3、属性查询键:通过该控键,用户可以查看当前播放音乐的相属性,获取关于该歌曲的用户所需的相关信息。
4、菜单栏:①文件:打开:用户通过该菜单项打开本地音乐文件,听任何用户想听的歌曲循环:通过循环设置,用户可以重复的播放一首喜欢的歌曲退出:退出音乐播放器,及退出该程序②播放控制:播放:选择歌曲之后,通过点击播放菜单项启动播放器播放音乐暂停:暂停当前正在播放的音乐停止:停止当前正在播放的音乐③播放列表:当用户通过文件打开本地音乐文件后,及相当于在播放列表里面添加了歌曲,及形成相应的歌曲播放目录3.总体设计结合需求分析来看,整个设计包含了简单的菜单栏,根据用户需求设置了三个简单的实现基本操作的菜单,分别是:文件,播放控制,播放列表;根据具体的操作每个菜单还包含了相应的菜单项,文件:打开,循环,退出;播放控制:播放,暂停,停止;播放列表则没有菜单项,该菜单就是用来显示或者查看相应的歌曲目录的。
该音乐播放器设置了两个窗口,运行程序时打开的初始化欢迎界面,用户可以根据自己的需求进行菜单栏里面的基本操作和相应的设置,当用户添加或者打开音乐播放文件的时候,程序将会显示出第二个音乐文件播放窗口,与此同时,第一个初始化窗口将会自动隐藏,在音乐播放窗口里面用户可以进行相关的音乐播放的控制操作。
音乐播放器课程设计java
音乐播放器课程设计java一、课程目标知识目标:1. 理解Java语言中面向对象编程的基本概念,包括类、对象、继承、封装等;2. 掌握Java中事件处理机制,了解图形用户界面(GUI)设计的基本方法;3. 学会使用Java内置的音频播放库,实现对音乐文件的播放、暂停、停止等基本控制。
技能目标:4. 能够运用所学知识设计并实现一个音乐播放器界面,包括播放、暂停按钮和音乐列表;5. 能够编写相应的Java代码,实现音乐播放器的功能,如音乐文件的加载、播放、暂停和停止;6. 培养学生解决问题的能力,学会调试和修复程序中出现的错误。
情感态度价值观目标:7. 培养学生对编程的兴趣和热情,增强其对学习Java语言的自信心;8. 培养学生团队协作精神,学会与他人分享和交流编程经验;9. 培养学生创新意识,激发学生主动探索新知识、新技术的热情。
本课程针对高年级学生,结合学科特点和教学要求,以实用性为导向,旨在让学生掌握Java编程的基本技能,培养其解决实际问题的能力。
通过本课程的学习,学生将能够独立设计并实现一个音乐播放器,提高其编程实践能力。
同时,注重培养学生的情感态度价值观,使其在掌握知识的同时,形成良好的学习习惯和团队协作精神。
二、教学内容1. 面向对象编程基础:- 类的定义与使用- 对象的创建与操作- 继承与多态- 封装与接口2. Java GUI设计:- Swing图形用户界面概述- 常用Swing组件的使用方法- 事件处理机制- 布局管理器3. 音乐播放器功能实现:- 音频播放库简介- 音乐文件的加载与播放- 播放控制功能实现(播放、暂停、停止)- 音乐列表展示4. 教学案例与实战:- 设计音乐播放器界面- 编写音乐播放器功能代码- 调试与优化音乐播放器程序- 项目展示与评价本章节教学内容按照课程目标进行选择和组织,注重科学性和系统性。
教学内容分为四个部分,分别对应Java面向对象编程基础、GUI设计、音乐播放器功能实现和教学案例实战。
基于java的音乐播放器课程设计报告
Java课程设计报告题目: java音乐播放器姓名学号院系班级专业任课教师1.设计内容及要求能够实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充实,交互友好,可以添加多首歌曲目录一个简单的基于java语言的音乐播放器,菜单栏:文件,播放控制和播放列表,文件菜单包含打开、循环和退出三个菜单项;播放控制菜单包含播放、暂停和停止三个菜单项,播放列表菜单则是当向里面添加歌曲之后才能够查看到里面所包含的歌曲目录。
当播放歌曲时,可以调节音量大小或者设置是否静音;可以查看当前播放音乐的相关属性,如:歌曲名,歌手,发布时间,所属专辑等等。
2.需求分析1、时间跟踪条:根据歌曲播放的进度,控制条自动进行追踪,用户可以随时了解歌曲的播放进度2、音量控制键:可以点击该控键进行音量大小的调节以及是否静音的设置3、属性查询键:通过该控键,用户可以查看当前播放音乐的相属性,获取关于该歌曲的用户所需的相关信息。
4、菜单栏:①文件:打开:用户通过该菜单项打开本地音乐文件,听任何用户想听的歌曲循环:通过循环设置,用户可以重复的播放一首喜欢的歌曲退出:退出音乐播放器,及退出该程序②播放控制:播放:选择歌曲之后,通过点击播放菜单项启动播放器播放音乐暂停:暂停当前正在播放的音乐停止:停止当前正在播放的音乐③播放列表:当用户通过文件打开本地音乐文件后,及相当于在播放列表里面添加了歌曲,及形成相应的歌曲播放目录3.总体设计结合需求分析来看,整个设计包含了简单的菜单栏,根据用户需求设置了三个简单的实现基本操作的菜单,分别是:文件,播放控制,播放列表;根据具体的操作每个菜单还包含了相应的菜单项,文件:打开,循环,退出;播放控制:播放,暂停,停止;播放列表则没有菜单项,该菜单就是用来显示或者查看相应的歌曲目录的。
该音乐播放器设置了两个窗口,运行程序时打开的初始化欢迎界面,用户可以根据自己的需求进行菜单栏里面的基本操作和相应的设置,当用户添加或者打开音乐播放文件的时候,程序将会显示出第二个音乐文件播放窗口,与此同时,第一个初始化窗口将会自动隐藏,在音乐播放窗口里面用户可以进行相关的音乐播放的控制操作。
音乐播放器Java课程设计报告
课程设计题目:java音乐播放器
学生姓名:
专 业:XXXXXXXXXXXXX
班级:
指导教师:
20XX年X月X日
、课程设计目的
1、编程设计音乐播放软件,使之实现音乐播放的功能。
2、培养学生用程序解决实际问题的能力和兴趣。
3、加深java中对多媒体编程的应用。
二、课程设计的要求
利用学到的编程知识和编程技巧,要求学生:
songlist .setVisible( true);
songlist .addItemListener((ItemListener) this);
//添加列表监听器
MainFrame .add( songlist);
for(int i=0;i< name. length ;i++){
song [i]=loadSound( name[i]);//逐个获取
1、系统设计要能完成题目所要求的功能,设计的软件可以进行简单的播放及其 他基本功能。
2、编程简练,可用,尽可能的使系统的功能更加完善和全面
3、说明书、流程图要清楚。
三、课程设计内容
1
音乐播放软件要求:
有图形界面,能播放MP3歌曲,有播放列表,前一首、后一首等常用播放软件 功能。
2
主要运用多媒体编程、 图形界面、数组及循环进行设计,从而实现简单的音
else
{
songname .setText("暂停播放:"
停播放歌曲
play .setIcon( new ImageIcon( "2.png"));
public void mouseEntered(MouseEvent arg0){ //TODOAuto-generated method stub
音乐播放器Java课程设计报告
《JA V A程序设计》课程设计报告题目:音乐播放器学院:计算机科学与工程学院专业:信息管理与信息系统学生姓名:杨柏昌学号: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.*;import javax.media.*;public class JMFPlayer extends JFrame implements ActionListener,ControllerListener{Player player=null;//声明一个Player对象String filePath;//存放音乐文件夹所在目录String fileName;//存放歌曲名称boolean click=false;//用来标记歌曲是否被点击int songIndex;//歌曲元素在列表中的位置int loop=3;//作为播放模式的标记JLabel songNameLable;JRadioButton sequenceBtn;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 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);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(){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 actionPerformed(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(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.addActionListener(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(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.setBackground(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.getSelectedIndex();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(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(".mp3")) {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(newMediaLocator("file:"+filePath+fileName));player.getDuration();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()==stopBtn){if(player!=null){player.stop();player.setMediaTime(new Time(0));}elsereturn;}if(e.getSource()==beforeBtn){int n=list.getItemCount();if(songIndex<n){songIndex=songIndex-1;if(songIndex<0){songIndex=n-1;}fileName=list.getItem(songIndex);run();}}if(e.getSource()==nextBtn){int n=list.getItemCount();if(songIndex<n){songIndex=songIndex+1;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(newMediaLocator("file:"+filePath+fileName));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 instanceof EndOfMediaEvent){player.setMediaTime(new Time(0));if(loop==0){player.start();}if(loop==1){int n=list.getItemCount();if(songIndex<n){fileName=list.getItem(songIndex+1);songIndex=songIndex+1;run();}}if(loop==2){int n=list.getItemCount();if(songIndex<n){songIndex=(int)(Math.random()*1000)%n;fileName=list.getItem(songIndex);run();}}}validate();}/** 主程序*/public static void main(String srgs[]){new JMFPlayer();}}测试1.运行程序如下:2.点击文件夹按钮弹出文件对话框,选择音乐文件夹界面如下:3.点击一首歌曲并播放总结做这个播放器用了两周的时间,一开始去图书馆借了好些书,发现了好几种类型做播放器用的API,发现有些比较繁杂和功能性不强,最终选用了JMF。
Java实战音乐播放器
Java实战音乐播放器-播放音乐文件,包括基本的音频控制创建一个基本的音乐播放器是一个有趣而复杂的项目,它涉及到音频文件的处理、用户界面的设计以及音频控制功能的实现。
在这个实战博客中,我将向您展示如何使用Java来创建一个简单的音乐播放器。
我们将使用Java的Swing库来构建用户界面,以及Java的javax.sound.sampled库来处理音频文件和音频控制。
这个播放器将能够加载和播放本地音频文件,包括基本的音频控制功能,如播放、暂停、停止和音量调节。
步骤1:创建Java项目首先,创建一个新的Java项目,并添加Swing和javax.sound.sampled库的依赖。
您可以使用Eclipse、IntelliJ IDEA或任何其他Java集成开发环境来完成这些任务。
步骤2:创建用户界面在我们的音乐播放器中,我们需要一个用户界面来加载和控制音乐文件。
我们将使用Swing 来创建以下基本组件:文件选择器:用于选择要播放的音乐文件。
播放按钮:用于开始或继续播放音乐。
暂停按钮:用于暂停音乐的播放。
停止按钮:用于停止音乐的播放。
音量控制:用于调整音量。
下面是一个示例的用户界面代码:javaCopy codeimport javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class MusicPlayerGUI extends JFrame {private JButton playButton;private JButton pauseButton;private JButton stopButton;private JSlider volumeSlider;private JFileChooser fileChooser;public MusicPlayerGUI() {setTitle("音乐播放器");setSize(400, 200);setDefaultCloseOperation(EXIT_ON_CLOSE);setLayout(new FlowLayout());fileChooser = new JFileChooser();playButton = new JButton("播放");pauseButton = new JButton("暂停");stopButton = new JButton("停止");volumeSlider = new JSlider(JSlider.HORIZONTAL, 0, 100, 50);add(fileChooser);add(playButton);add(pauseButton);add(stopButton);add(volumeSlider);playButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 实现播放音乐的逻辑}});pauseButton.addActionListener(new ActionListener() { @Overridepublic void actionPerformed(ActionEvent e) {// 实现暂停音乐的逻辑}});stopButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 实现停止音乐的逻辑}});volumeSlider.addChangeListener(new ChangeListener() { @Overridepublic void stateChanged(ChangeEvent e) {// 实现音量调节的逻辑}});}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {new MusicPlayerGUI().setVisible(true);}});}}步骤3:音频处理和控制接下来,我们需要添加音频处理和控制的逻辑。
Java程序设计音乐播放系统 5-推荐下载
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术0艺料不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试22下卷,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看2度并22工且22作尽22下可22都能2可地护1以缩关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编5试要写、卷求重电保技要气护术设设装交备备4置底高调、动。中试电作管资高气,线料中课并3敷试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
头歌云课java实训作业五
头歌云课java实训作业五Java实训作业五:基于头歌云课的音乐播放器概述:在本次实训作业中,我们将使用Java编程语言基于头歌云课平台设计并实现一个简单的音乐播放器。
该音乐播放器能够实现音乐的播放、暂停、停止以及音量的调节等基本功能。
同时,我们还需考虑如何实现音乐列表的管理,能够实现音乐的添加、删除、排序等功能。
一、需求分析:1. 实现基本功能:- 播放音乐:能够选择音乐文件进行播放。
- 暂停音乐:暂停当前正在播放的音乐。
- 停止音乐:停止当前正在播放的音乐。
- 调节音量:能够调节音乐的音量大小。
2. 实现音乐列表管理:- 添加音乐:能够将音乐添加到播放列表中。
- 删除音乐:能够删除播放列表中的音乐。
- 排序音乐:能够根据音乐的名称、歌手、时长等属性对播放列表中的音乐进行排序。
二、概要设计:1. 音乐播放器类:- 属性:音乐列表(List<Music>)、当前播放的音乐(Music)、音量大小(int)。
- 方法:播放音乐、暂停音乐、停止音乐、调节音量等。
2. 音乐类:- 属性:音乐名称(String)、歌手(String)、时长(int)等。
- 方法:获取音乐名称、获取歌手、获取时长等。
3. 音乐列表管理类:- 属性:音乐列表(List<Music>)。
- 方法:添加音乐、删除音乐、排序音乐等。
三、详细设计与实现:1. 音乐播放器类的详细设计:- 属性:- 音乐列表:使用List<Music>类型的对象存储音乐列表。
- 当前播放的音乐:使用Music类型的对象存储当前播放的音乐。
- 音量大小:使用int类型的变量存储音量大小。
- 方法:- 播放音乐:根据传入的音乐名称,从音乐列表中查找对应的音乐并播放。
- 暂停音乐:暂停当前正在播放的音乐。
- 停止音乐:停止当前正在播放的音乐。
- 调节音量:根据传入的音量大小,调节当前音乐的音量。
- 其他辅助方法:例如获取当前播放音乐的名称、获取当前播放音乐的歌手等。
音乐播放器Java课程设计报告
课程设计报告课程设计题目: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;elseplaybutton=false; //当按下play后改变播放状态}elseif(btn==last){ j-=1; //当按下last后将上一曲选定if(j<0)j=name.length-1; //若之前选定为第一首,则跳到最后一首playbutton=true;loopbutton=false;}elseif(btn==next){ j+=1; //当按下next后将下一曲选定if(j>=name.length)j=0; //若之前选定为最后一首,则跳到第一首playbutton=true;loopbutton=false;}elseif(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);}elsesongname.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程序设计课程设计报告材料音乐播放器
《Java及Java web应用开发》实验报告设计题目: Java音乐播放器专业计算机信息管理班级 1班学号姓名2014年12月24 日import javax.media.ControllerEvent;import javax.media.ControllerListener;import javax.media.EndOfMediaEvent;import javax.media.PrefetchCompleteEvent;import javax.media.RealizeCompleteEvent;import javax.media.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MediaPlayer extends JFrame implements ActionListener, ItemListener, ControllerListener {String title;Player player;boolean first = true, loop = false;Component vc, cc;String currentDirectory=null;// 构造函数,其中包括了设置响应窗口事件的监听器。
MediaPlayer(String title) {super(title);/* 关闭按钮的实现。
*/addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {dispose(); }public void windowClosed(WindowEvent e) {if (player != null)player.close();System.exit(0);} }); // 调用程序菜单栏的方法成员完成菜单的布置setupMenu();setSize(400, 400);setVisible(true); } // 本方法用以设置程序菜单栏public void setupMenu() {// 设置一个菜单Menu f = new Menu("文件");// 往设置的菜单添加菜单项MenuItem mi = new MenuItem("打开");f.add(mi);mi.addActionListener(this);f.addSeparator();CheckboxMenuItem cbmi = new CheckboxMenuItem("循环", false); cbmi.addActionListener(this);f.add(cbmi);f.addSeparator();MenuItem ee = new MenuItem("退出");ee.addActionListener(this);f.add(ee);f.addSeparator();Menu l = new Menu("播放列表");Menu c = new Menu("播放控制");MenuItem move = new MenuItem("播放");move.addActionListener(this);c.add(move);c.addSeparator();MenuItem pause = new MenuItem("暂停");pause.addActionListener(this);c.add(pause);c.addSeparator();MenuItem stop = new MenuItem("停止");stop.addActionListener(this);c.add(stop);c.addSeparator();// 设置一个菜单栏MenuBar mb = new MenuBar();mb.add(f);mb.add(c);mb.add(l);// 将构造完成的菜单栏交给当前程序的窗口; setMenuBar(mb); }// 动作时间响应成员;捕捉发送到本对象的各种事件; public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString cufile, selectfile, currentDirectory;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(new Time(0)); }return; } // 用户选择要播放的媒体文件if (e.getActionCommand().equals("打开")) {FileDialog fd = new FileDialog(this, "打开媒体文件", FileDialog.LOAD); // fd.setDirectory(currentDirectory);fd.setVisible(true);// 如果用户放弃选择文件,则返回if (fd.getFile() == null) {return; }// 保存了所选文件的名称及其路径名称已被稍后使用// 同时设置当前文件夹路径selectfile = fd.getFile();currentDirectory = fd.getDirectory();cufile = currentDirectory + selectfile;// 将用户选择的文件作为一个菜单项加入播放列表,该菜单项名为该文件名; // 被点击后给出的命令串是该文件的全路径名MenuItem mi = new MenuItem(selectfile);mi.setActionCommand(cufile);MenuBar mb = getMenuBar();Menu m = mb.getMenu(2);mi.addActionListener(this);m.add(mi);} else {// 程序逻辑运行到次表示用户选择了一个“播放列表”中的媒体文件// 此时可以通过如下动作获得该文件的全路径名cufile = e.getActionCommand();selectfile = cufile; }// 如果存在一个播放器,则先将其关闭,稍后再重新创建// 创建播放器时需要捕捉一些异常if (player != null) {player.close(); }try {player = Manager.createPlayer(new MediaLocator("file:" + cufile));} catch (Exception e2) {System.out.println(e2);return; }/** catch(NoPlayerException e2){ System.out.println("不能找到播放器"); * return ; }*/if (player == null) {System.out.println("无法创建播放器");return; }first = false;setTitle(selectfile);// 设置处理播放控制器实际的对象;/**/player.addControllerListener(this);player.prefetch(); }// 菜单状态改变事件的响应函数;public void itemStateChanged(ItemEvent arg0) {// TODO Auto-generated method stub }public static void main(String[] args) {// TODO Auto-generated method stubnew MediaPlayer("播放器"); }// 调用绘图函数进行界面的绘制// public void update() { // }// 绘图函数成员//public void paint(Graphics g) { // }public void controllerUpdate(ControllerEvent e) {// TODO Auto-generated method stubContainer tainer = getContentPane();// 调用player.close()时ControllerClosedEvent事件出现// 如果存在视觉部件,则该部件应该拆除(为了一致起见,我们对控制面版部件也执行同样的操作,下一次需要时再构造)if (e instanceof ControllerClosedEvent) {if (vc != null) {remove(vc);vc = null; }if (cc != null) {remove(cc);cc = null; } }// 播放结束时,将播放指针置于文件之首,如果设定了循环播放,则再次启动播放器;if (e instanceof EndOfMediaEvent) {player.setMediaTime(new Time(0));if (loop) {player.start(); }return; }// PrefetchCompletEvent事件发生后调用start,正式启动播放if (e instanceof PrefetchCompleteEvent) {player.start();return; }// 本事件表示由于播放的资源已经确定;此时要将媒体的图形conmopnent// 如果有显示出来,同时将播放器player的控制显示到窗口里;if (e instanceof RealizeCompleteEvent) {// 如果媒体中有图像,将对应图像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; } } } }。
Java程序设计音乐播放系统 5
音乐播放器系统1 引言采用eclipse开发软件,设计一套可以播放音乐的音乐播放系统。
实习目的示例:通过音乐播放器系统课程设计实习过程,进一步巩固《Java程序设计》课程所学的理论知识,增强学生利用所学内容获取相关知识,以解决实习过程中所面临的问题,用户界面设计以及MediaPlay类的使用操作问题和技术难点,各种类包和接口的使用问题,以提高利用Java语言实际动手进行程序设计的能力。
实习要求示例:能够熟练运用Java,独立设计和编制一个具有一定难度的、解决实际应用问题的音乐播放系统的应用程序。
2 系统设计3 系统实现import java.awt.BorderLayout;import ponent;import java.awt.FileDialog;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.util.Vector;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JSplitPane;import javax.swing.SwingUtilities;import javax.media.ControllerEvent;import javax.media.MediaLocator;import javax.media.RealizeCompleteEvent;import javax.media.bean.playerbean.MediaPlayer;public class cuiPM3 {private static MediaPlayer MyPlayer;private static String filename = null;private static JFrame framePlay = null;private static JPanel panelPlay = null;private static JPanel panelList = null;private static JPanel panel = null;private static JList listPlay = null;private static Vector vectorPlay = null;private static JMenuBar menuBar=null;private static JSplitPane SplitPanel=null;Component vc, cc;private static ActionListener openFile = new ActionListener() { public void actionPerformed(ActionEvent e) {FileDialog fd = new FileDialog(framePlay, "选择歌曲", FileDialog.LOAD); // 打开选择文件选择歌曲fd.setVisible(true); // 显示选择框filename = fd.getDirectory() + fd.getFile(); // 文件名称=获取此文件对话框的目录+文件名System.out.println(filename);if (filename.equals("")) {return;} else if (filename.equals("nullnull")) {return;}boolean j = false;for (int i = 0; i < vectorPlay.size(); i++) {if (vectorPlay.get(i).toString().equals(filename)) {// 如果数组里面的数据和文件名一样,则直接结束不添加j = true;break;}}if (j == false) {vectorPlay.add(filename); // 将文件名添加至动态数组里面listPlay.setListData(vectorPlay); // 列表框的数据添加动态数组 }}};private static ActionListener closeFile = new ActionListener() {public void actionPerformed(ActionEvent e) {System.exit(0);}};private static ActionListener playMusic = new ActionListener() {public void actionPerformed(ActionEvent e) {play();}};private static ActionListener stopMusic = new ActionListener() {public void actionPerformed(ActionEvent e) {stop();}};public cuiPM3() {initialize();// 初始状态}private void initialize() {}protected static void play() {try {if (filename.equals("")) {return;}if (MyPlayer == null) {MyPlayer = new MediaPlayer();}else {closePreviosPlayer();}MyPlayer.setMediaLocator(new MediaLocator("file:///" + filename)); //建立一个播放器的定位时间MyPlayer.realize();MyPlayer.start(); // 开始播放歌曲MyPlayer.setVisible(true);} catch (Exception e) {}}private static void closePreviosPlayer() {if (MyPlayer == null)return;MyPlayer.stop();MyPlayer.deallocate(); // 停止播放并且重新装载DateSource Component visual = MyPlayer.getVisualComponent();Component control = MyPlayer.getControlPanelComponent(); if (visual != null) {panelPlay.remove(visual);}if (control != null) {panelPlay.remove(control);}}protected static void stop() {MyPlayer.stop();MyPlayer.deallocate();}private void validate() {}public void controllerUpdate(ControllerEvent e){if(e instanceof RealizeCompleteEvent){if(MyPlayer.getVisualComponent()!=null){Component v = MyPlayer.getVisualComponent();v=MyPlayer.getControlPanelComponent();panelPlay.add(v);}}cc = MyPlayer.getControlPanelComponent ();if (cc != null)panelPlay.add (cc, BorderLayout.SOUTH);}private static MouseListener mouseAction=new MouseListener() {public void mouseClicked(MouseEvent e) {if (e.getClickCount() == 1) { // getClickCount鼠标监听事件,如果鼠标单击一次String str = (String) listPlay.getSelectedValue();if (str == null) {return;}filename = str;}if (e.getClickCount() == 2) {String str = (String) listPlay.getSelectedValue(); // 如果鼠标单击两次str接受鼠标选取的列表框中的值if (str == null) {return;}filename = str;play();}}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}};public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {framePlay = new JFrame("Music");framePlay.setBounds(200, 100, 1150, 580);framePlay.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);framePlay.setResizable(false);// 将最大化按钮的作用取消panelPlay = new JPanel(); // 创建一个左面的播放面板panelList = new JPanel(); // 创建一个右面的列表面板panel=new JPanel();ImageIcon image=new ImageIcon("D:\\Downloads\\1.jpg\\");JLabel labelImage=new JLabel(image);framePlay.getLayeredPane().add(labelImage, new Integer(Integer.MIN_VALUE));panelPlay.add(labelImage,BorderLayout.WEST);SplitPanel = new JSplitPane();// 创建一个可分割的面板,用于将面板分为一左一右两个面板 SplitPanel.setDividerSize(6); // 设置分格条的大小SplitPanel.setResizeWeight(0.2); // 设置分割的比例SplitPanel.setEnabled(false); //固定分割条不可左右SplitPanel.setRightComponent(panelList); // 为分割的右面板添加播放列表面板SplitPanel.setLeftComponent(panelPlay); // 为分割的左面板添加播放面板listPlay = new JList(); // 定义一个列表框listPlay.addMouseListener(mouseAction);JLabel labelList=new JLabel("播放列表");panelList.add(labelList,BorderLayout.NORTH);vectorPlay = new Vector(); // 定义一个动态数组,用于接受我们添加的歌曲的列表panelList.add(listPlay);// 将列表框添加至列表面板menuBar = new JMenuBar(); // 定义一个空白的菜单条JMenu menu = new JMenu("文件"); // 定义一个文件的菜单组件JMenu menu2 = new JMenu("操作"); // 定义一个保存的菜单组件menuBar.add(menu);menuBar.add(menu2);JMenuItem menuItem = new JMenuItem("打开··"); // 定义一个"打开文件··"的菜单项menuItem.addActionListener(openFile);JMenuItem menuItem2 = new JMenuItem("关闭程序 "); // 定义一个"关闭程序"的菜单项menuItem2.addActionListener(closeFile);JMenuItem menuItem3 = new JMenuItem("播放"); // 定义一个"播放"的菜单项menuItem3.addActionListener(playMusic);JMenuItem menuItem4 = new JMenuItem("停止"); // 定义一个"停止"的菜单项menuItem4.addActionListener(stopMusic);// 为"文件"菜单组添加"打开文件··"和"关闭程序"两个菜单项menu.add(menuItem);menu.add(menuItem2);// 为"操作"菜单组添加"播放"和"停止"这两个菜单项menu2.add(menuItem3);menu2.add(menuItem4);framePlay.setJMenuBar(menuBar); // 将菜单条添加至顶层容器中framePlay.add(SplitPanel,BorderLayout.NORTH);framePlay.add(panel,BorderLayout.SOUTH);framePlay.setVisible(true);}});}}4 结束语通过这次的实习,让我更加深刻的了解了java语言,对于做一份实用软件的整体流程以及框架有了一些了解和熟悉,领会了java语言的精妙之处,同时也让自己认识到了自己的不足之处。
java音乐播放器课程设计
java⾳乐播放器课程设计⼀、课程设计⽬的1、编程设计⾳乐播放软件,使之实现⾳乐播放的功能。
2、培养学⽣⽤程序解决实际问题的能⼒和兴趣。
3、加深java中对多媒体编程的应⽤。
⼆、课程设计的要求利⽤学到的编程知识和编程技巧,要求学⽣:1、系统设计要能完成题⽬所要求的功能,设计的软件可以进⾏简单的播放及其他基本功能。
2、编程简练,可⽤,尽可能的使系统的功能更加完善和全⾯3、说明书、流程图要清楚。
三、课程设计内容1、课程设计的题⽬及简介⾳乐播放软件要求:有图形界⾯,能播放MP3歌曲,有播放列表,前⼀⾸、后⼀⾸等常⽤播放软件功能。
2、设计说明主要运⽤多媒体编程、图形界⾯、数组及循环进⾏设计,从⽽实现简单的⾳乐播放。
package com.mainyin;import javax.media.ControllerEvent;import javax.media.ControllerListener;import javax.media.EndOfMediaEvent;import javax.media.PrefetchCompleteEvent;import javax.media.RealizeCompleteEvent;import javax.media.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MediaPlayer extends JFrame implements ActionListener,ItemListener, ControllerListener {String title;Player player;boolean first = true, loop = false;Component vc, cc;String currentDirectory=null;// 构造函数,其中包括了设置响应窗⼝事件的监听器。
java 游戏开发学习情境5音乐播放器设计
08游戏3-2
目标:
◦ 为游戏添加音效,能够用Java加载、播放游戏中的声 音文件,并按要求控制播放。
任务:
◦ 用Java设计一个播放多种声音的程序。为电梯模拟游 戏添加背景音乐。
目标与仸务
学习过程
教师 项目核心 提供: 声音播放案例 提供: 多个声音列表 播放关键代码 提供: 电梯游戏的 声音和界面 学生 模仿完成: 声音播放案例 协作完成: 多个声音列表 播放 协作完成: 电梯游戏的 音效处理
音文件的例子,运行结果如图所示:
步骤一:创建一个Applet小程序
(1)通过继承Applet类来创建一个有三个 按钮的容器 import java.applet.*; public class mAudio extends Applet{} (2)定义成员属性 包含3个成员属性,分别表示播放的声音的 URL相对地址,当前播放的音频流和声音播 放状态。
应用升级
(2)编写一个类,通过播放AudioClip对象 来产生声音。(学生自主完成)
功能扩展之案例二
// 控制播放停止的按钮 private Button playClip; private Button loopClip; private Button stopClip; private Button stopAllClips; // 跟踪当前哪些音频片段在播放 private boolean[] clipsPlaying;
应用升级
问题陈述: 在电梯系统的模拟程序里,公司要求在模拟中 加入声音。例如,当一个人走路时,应能听到 脚步声。每当按下戒者复位一个楼层按钮戒者 电梯按钮时,应当听到单击声。电梯到达时铃 声应当响起,且在门打开时戒者关上时,门应 当吱吱作响。最后,当电梯在楼层间运行时, 应播放“电梯音乐”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应用升级
问题陈述: 在电梯系统的模拟程序里,公司要求在模拟中 加入声音。例如,当一个人走路时,应能听到 脚步声。每当按下戒者复位一个楼层按钮戒者 电梯按钮时,应当听到单击声。电梯到达时铃 声应当响起,且在门打开时戒者关上时,门应 当吱吱作响。最后,当电梯在楼层间运行时, 应播级
类SoundEffects包含方法getAudioClip,该 方法通过参数soundFiled调用类 java.applet.Applet的static方 法.newAudioClip返回一个AudioClip对象。 方法setPathPrefix允许改变声音文件的目录 (如果我们需要把声音分配到多个目录中,该 方法很有用)。
MIDI声音文件
java.applet.Applet javax.sound.midi javax.sound.midi.spi javax.sound.sampled
javax.sound.sampled.spi
与声音处理有关的包和类
javax.sound.midi包,为I/O、序列化和MIDI 数据的合成提供接口和类。 javax.sound.midi.spi 包,为新MIDI设备、 MIDI文件阅读器和编写器等的实现提供接口。 javax.sound.sampled 包,为捕获、处理和播 放音频数据提供接口和类。 javax.sound.sampled.spi 包,为新音频设备、 声音文件阅读器和编写器戒音频格式转换提供抽 象类。
在Applet类播放声音
如果需要重复播放某个声音文件,就需要使用
AudioClip接口提供的方法。 AudioClip接口提供播放声音片段的方法。 多个AudioClip项可以在同一时间播放,从而产 生声音混合的效果。
重复播放声音
项目核心
一个基本的使用Applet类提供的方法播放声
扩展步骤一:增加一套按钮
定义令一组成员属性 包含新的3个成员属性,分别表示播放的第二段声音 的URL相对地址,当前播放的音频流和声音播放状态。
改写init()方法 在其中调用getAudioClip来初始化另一个要播放的音 频流: Audio2=getAudioClip(new URL(getDocumentBase(),hurl2)); 并且添加一套新按钮,重新布局。
扩展步骤二:对Applet容器中的按 钮重新进行事件处理
为Applet容器中的新按钮添加事件监听器 由亍要对Applet容器中发生的三种按钮按下事件进行分别响应,可 以直接在 init()方法中对三个按钮添加语句: addActionListener(this); (4)实现ActionListener接口,在actionPerformed方法中 对六个事件源作出相应 public class mAudio extends Applet implements ActionListener{ public void actionPerformed(ActionEvent e) { … } }
音文件的例子,运行结果如图所示:
步骤一:创建一个Applet小程序
(1)通过继承Applet类来创建一个有三个 按钮的容器 import java.applet.*; public class mAudio extends Applet{} (2)定义成员属性 包含3个成员属性,分别表示播放的声音的 URL相对地址,当前播放的音频流和声音播 放状态。
完成情况评价标准
完成(1)-(4),得到最终结果的正确输出, 100分。 完成(1)-(3),正确生成菜单,80分。 完成(1)-(2),正确生成菜单,60分。
功能扩展之案例二
编写一个applet让用户从几个音频片段中选择 来播放,程序运行画面如下:
功能扩展之案例二
功能扩展之案例二
// 控制播放停止的按钮 private Button playClip; private Button loopClip; private Button stopClip; private Button stopAllClips; // 跟踪当前哪些音频片段在播放 private boolean[] clipsPlaying;
解决思路: 编写类SoundEffects,将声音文件转换成 java.applet.AudioClip对象
关键代码
try { return Applet.newAudioClip( getClass().getResource( prefix + soundFile ) ); } // return null if soundFile does not exist catch ( NullPointerException nullPointerException ) { return null; } }
Java游戏开发 学习情境5:音乐播放器设计
08游戏3-2
目标:
◦ 为游戏添加音效,能够用Java加载、播放游戏中的声 音文件,并按要求控制播放。
任务:
◦ 用Java设计一个播放多种声音的程序。为电梯模拟游 戏添加背景音乐。
目标与仸务
学习过程
教师 项目核心 提供: 声音播放案例 提供: 多个声音列表 播放关键代码 提供: 电梯游戏的 声音和界面 学生 模仿完成: 声音播放案例 协作完成: 多个声音列表 播放 协作完成: 电梯游戏的 音效处理
步骤一:创建一个Applet小程序
这里需要根据事件源即按钮的丌同作出分别劢 作,可以通过e.getActionCommand()来判 断是哪个按钮被按下。 AudioClip类中的play,stop,loop方法分别对 应播放、停止和循环播放功能。
功能扩展
在上面程序的基础上要求增加一套按钮用亍播 放另一个音乐,2个音乐可以同时播放,制造 一种混音效果。运行情况如下:
功能扩展
应用升级
AU文件格式 WAV文件格式 AIFF文件格式 MIDI文件格式
声音文件 有很多格 式
Java支持的音频文件格式
这是Java语言最早的声音格式, 扩展名为AU戒SND,适用亍短的声音文 件。AU类型文件使用的三种典型音频 格式为:8位单声道采样频率为8KHz的 μ -law类型、8位线性类型以及16位线 性类型。
步骤二:对Applet容器中的按钮劢 作进行事件处理
(1)为Applet容器添加按钮劢作监听器 由亍要对Applet容器中发生的三种按钮按下事件进行分别响 应,可以直接在 init()方法中对三个按钮添加语句: addActionListener(this); (2)实现ActionListener接口 public class mAudio extends Applet implements ActionListener{ public void actionPerformed(ActionEvent e) { … } }
应用升级
(2)编写一个类,通过播放AudioClip对象 来产生声音。(学生自主完成)
与声音处理有关的包和类
使用play()方法装载不播放声音。格式 如下: 1、void play(URL url) 2、void play(URL url,String name) 一旦play()方法装载了声音文件就立即 播放。如果找丌到,play()方法丌返回 出错信息,反应到用户端就是听丌到声音。 play()方法叧播放一遍声音文件
步骤一:创建一个Applet小程序
(3)在Applet的子类中覆盖Applet类的 init()方法 init()是java.applet.Applet类中的方法, 当applet程序首次被打开时,会执行此方法 定义的程序代码。当applet程序首次被打开 时,init()将第一个被自劢执行。 在其中调用getAudioClip来初始化当前要 播放的音频流: audio=getAudioClip(new URL(getDocumentBase(),hurl));
AU声音文件
扩展名为WAV,由Microsoft和 IBM共同开发,Windows 9X系统都 支持此格式。
WAV声音文件
扩展名为AIF戒IEF,是 Macintosh公司和SGI公司所共用的 标准音频文件格式。
AIFF声音文件
扩展名为MID,是音乐制造业所认可的 标准,主要用亍控制诸如合成器和声卡之 类的设备。Java 2平台支持三种类型的 MIDI文件公式,它们分别为MIDI文件类型O、 MIDI文件类型1以及RMF。
// 程序中声音的名字 public final String[] AUDIO = { "ping", "pop", "return", "salvation", "shuffle", "squish" }; // 包含上述字符串数组的下拉框 private Choice choice; // 真实的音频片段数据 private AudioClip[] clips;