作者博客地址:http://www.yooongchun.cn/

摘要:本文使用java基础技术实现了一个可播放mid、wav格式音乐的简易音乐播放器,带UI

//此程序实现mid.wav格式音频文件的播放//暂时只实现了单曲播放功能<播放面板里的play//选项>其它功能会后继添加//Version 1.0 // @author Zha_yongchun// Email:1729465178@qq.compackage com.music; import java.awt.event.*;import java.io.File;import java.io.IOException;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.DataLine;import javax.sound.sampled.LineUnavailableException;import javax.sound.sampled.SourceDataLine;import javax.sound.sampled.UnsupportedAudioFileException;import javax.swing.*;import java.awt.*;public class playAudio extends JFrame implements ActionListener {static String filePath =null;//播放文件路径JButton btPause, btExit, btPlay, btLoop, btStop;JPanel panel;JMenuBar mb;JMenu menu;JMenuItem menuMi1,menuMi2;JTextArea textarea;public static void main(String[] args) {playAudio pa = new playAudio();}// 构造方法public playAudio() {// 定义按钮btPause = new JButton("Pause");btPause.setFont(new Font("Chaparral Pro Light",Font.BOLD,15));btExit = new JButton("EXIT");btExit.setFont(new Font("Chaparral Pro Light",Font.BOLD,15));btPlay = new JButton("PLAY");btPlay.setFont(new Font("Chaparral Pro Light",Font.BOLD,15));btLoop = new JButton("LOOP");btLoop.setFont(new Font("Chaparral Pro Light",Font.BOLD,15));btStop = new JButton("STOP");btStop.setFont(new Font("Chaparral Pro Light",Font.BOLD,15));//定义文本域textarea=new JTextArea("Import music fileDialog...");textarea.setEditable(false);textarea.setFont(new Font("Chaparral Pro Light",Font.HANGING_BASELINE,20));//定义菜单栏mb=new JMenuBar();menu=new JMenu("File");menu.setMnemonic('F');menu.setFont(new Font("Chaparral Pro Light",Font.HANGING_BASELINE,15));menuMi1=new JMenuItem("Open");menuMi1.setMnemonic('O');menuMi1.setFont(new Font("Chaparral Pro Light",Font.HANGING_BASELINE,15));menuMi2=new JMenuItem("Exit");menuMi2.setMnemonic('E');menuMi2.setFont(new Font("Chaparral Pro Light",Font.HANGING_BASELINE,15));//定义面板panel = new JPanel();// 添加面板组件panel.add(btPlay);panel.add(btLoop);panel.add(btPause);panel.add(btStop);panel.add(btExit);//添加菜单组件mb.add(menu);menu.add(menuMi1);menu.add(menuMi2);// 添加事件监听btPause.addActionListener(this);btPause.setActionCommand("pause");btExit.addActionListener(this);btExit.setActionCommand("exit");btPlay.addActionListener(this);btPlay.setActionCommand("play");btLoop.addActionListener(this);btLoop.setActionCommand("loop");btStop.addActionListener(this);btStop.setActionCommand("stop");menuMi1.addActionListener(this);menuMi1.setActionCommand("open");menuMi2.addActionListener(this);menuMi2.setActionCommand("exit");// 流式布局//this.setLayout(new GridLayout(2, 1,5,0));this.setJMenuBar(mb);this.add(textarea);this.add(panel,BorderLayout.SOUTH);// 显示窗口this.setIconImage(new ImageIcon("image/music.JPG").getImage());this.setTitle("MusicPlayer");// 设置用户界面this.setSize(400, 150);// 设置窗口大小,数字代表像素this.setLocation(300, 260);// 设置窗体位置this.setResizable(false);// 设置窗体大小是否可调整this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭进程this.setVisible(true);// true 显示,false不显示}// 事件监听public void actionPerformed(ActionEvent e) {String text="";//文件路径载体Audio player = new Audio(filePath);//初始化播放器// 打开if (e.getActionCommand().equals("open")) {// 打开选择文件选择歌曲FileDialog fd = new FileDialog(this,"Chooes music", FileDialog.LOAD);fd.setVisible(true); // 显示选择框filePath = fd.getDirectory() +fd.getFile(); // 文件名称=获取此文件对话框的目录+文件名if(filePath!=null)System.out.println(text="filePath is: "+filePath);elseSystem.out.println(text="Couldn't open file");}// 退出else if (e.getActionCommand().equals("exit")) {player.interrupt();System.out.println(text="Exit program!");System.exit(0);}// 播放else if (e.getActionCommand().equals("play")) {if(filePath!=null){player.start();System.out.println(text="Play music: "+filePath);}elseSystem.out.println(text="There is not any file!");}// 循环else if (e.getActionCommand().equals("loop")) {if(filePath!=null){while(!player.isAlive()){try{player.start();System.out.println(text="Loop playing"+filePath);}catch(Exception e1){System.err.println(text="Loop Error");}}}elseSystem.out.println(text="There is not any file!");}// 停止else if (e.getActionCommand().equals("stop")) {player.interrupt();System.out.println(text="Stop playing!");}//暂停else if(e.getActionCommand().equals("pause")){player.interrupt();System.out.println(text="Pause playing!");}this.textarea.setText(text);}}//Audio类实现声音流播放 1.定义音频文件的变量,//变量需要: 一个用于存储音频文件对象名字的String对象 filename;//2.构造函数,初始化filename//3.线程运行函数重写class Audio extends Thread {// 1.定义音频文件的变量,变量需要:一个用于存储音频文件对象名字的String对象 filenameprivate String filename;// 2.构造函数,初始化filenamepublic Audio(String filename) {this.filename = filename;}// 3.线程运行函数重写public void run() {// 1.定义一个文件对象引用,指向名为filename那个文件File sourceFile = new File(filename);// 定义一个AudioInputStream用于接收输入的音频数据AudioInputStream audioInputStream = null;// 使用AudioSystem来获取音频的音频输入流try {audioInputStream = AudioSystem.getAudioInputStream(sourceFile);} catch (UnsupportedAudioFileException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}// 4,用AudioFormat来获取AudioInputStream的格式AudioFormat format = audioInputStream.getFormat();// 5.源数据行SoureDataLine是可以写入数据的数据行SourceDataLine auline = null;// 获取受数据行支持的音频格式DataLine.infoDataLine.Info info = new DataLine.Info(SourceDataLine.class, format);// 获得与指定info类型相匹配的行try {auline = (SourceDataLine) AudioSystem.getLine(info);// 打开具有指定格式的行,这样可使行获得所有所需系统资源并变得可操作auline.open();} catch (LineUnavailableException e) {e.printStackTrace();}// 允许某一个数据行执行数据i/oauline.start();// 写出数据int nBytesRead = 0;byte[] abData = new byte[1024];// 从音频流读取指定的最大数量的数据字节,并将其放入给定的字节数组中。try {while (nBytesRead != -1) {nBytesRead = audioInputStream.read(abData, 0, abData.length);// 通过此源数据行将数据写入混频器if (nBytesRead >= 0)auline.write(abData, 0, nBytesRead);}} catch (IOException e) {e.printStackTrace();} finally {auline.drain();auline.close();}}}

【Java实战】Java实现简易音乐播放器相关推荐

  1. 简单音频播放器java代码_Java实现简易音乐播放器

    //此程序实现mid.wav格式音频文件的播放 //暂时只实现了单曲播放功能 //选项>其它功能会后继添加 //Version 1.0 // @author Zha_yongchun // Em ...

  2. java计算机毕业设计Vue.js音乐播放器设计与实现源码+数据库+系统+lw文档

    java计算机毕业设计Vue.js音乐播放器设计与实现源码+数据库+系统+lw文档 java计算机毕业设计Vue.js音乐播放器设计与实现源码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S ...

  3. java计算机毕业设计Vue.js音乐播放器设计与实现源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计Vue.js音乐播放器设计与实现源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计Vue.js音乐播放器设计与实现源码+mysql数据库+系统+lw文档+部署 ...

  4. Android Studio简易音乐播放器设计作业

    Android Studio简易音乐播放器设计作业 实验成功展示 实验代码 MainActivity.java XML文件 class文件 利用BroadcastReceiver模拟音乐播放器,实现播 ...

  5. 利用Broadcast及相关组件实现简易音乐播放器功能

    目录 前言 项目源码 准备工作 代码编写 页面布局 Service类的创建 主函数的编写 项目心得 前言 在Andriod Studio中使用Broadcast实现了简易音乐播放器的功能.可以进行播放 ...

  6. JavaScript + Audio API自制简易音乐播放器(详细完整版、小白都能看懂)

    JavaScript + Audio API自制简易音乐播放器(详细完整版) ** 音乐播放器的功能清单如下: ** 1.点击暂停按钮,歌曲暂停 2.点击播放按钮,歌曲播放 3.单曲循环与取消单曲循环 ...

  7. html实现简易音乐播放器

    目标: 使用vue.js导包的形式做一个简单的音乐播放器,新手也很容易看懂. 内容: 1. 使用了flex实现响应式布局: 2. 使用min-width防止字体被压缩: 3. 使用computed计算 ...

  8. 单片机音乐播放器课程设计C语言,单片机课程设计简易音乐播放器

    单片机课程设计简易音乐播放器 论文题目:简易音乐播放器所属系部:电子工程系 指导教师: 学生姓名: 学 号: 专 业: 电子信息工程技术 题目: 简易音乐播放器任务与要求:本设计以 MCS-51 系列 ...

  9. 【毕业设计】28-基于单片机的音乐播放器简易音乐播放器设计(原理图+源代码+仿真工程+答辩PPT+答辩论文)

    typora-root-url: ./ [毕业设计]28-基于单片机的音乐播放器简易音乐播放器设计(原理图+源代码+仿真工程+答辩PPT+答辩论文) 文章目录 typora-root-url: ./ ...

最新文章

  1. Windows系统如何使用宝塔面板一键快速搭建本地服务器环境(LNMP/LAMP)
  2. cuda runtime error (59) : device-side assert triggered when running transfer_learning_
  3. C++ decltype类型指示符
  4. 从零开始的51单片机——VsCode+EIDE环境搭建
  5. Mule,目前综合状态最良好的开源ESB方案
  6. 【.Net Micro Framework PortingKit – 12】SysTick驱动开发
  7. AIO+BIO+NIO+同步+异步+阻塞+非阻塞
  8. 蓝桥杯2017初赛-9数算式-dfs
  9. linux怎么安装高德导航软件,高德地图车机版如何安装?高德地图车机版安装教程...
  10. 通俗易懂!视觉slam第二部分——salm过程简介
  11. JS函数之间的调用(函数内调用一个函数、调用函数内部的函数)
  12. IAR EWARM教程
  13. 铲除浏览器右键菜单中的QQ相关项目(转)
  14. 基于JavaWeb的3D网上模板商城
  15. 2.高速PCB设计规范(一)
  16. ensp下载与安装问题
  17. 10015---MySQL--事务
  18. nii格式转化为png格式或者img格式
  19. 2020 消息中间件MQ与RabbitMQ面试题大全
  20. 《路由器开发 - 路由器刷机指南》华硕路由器RT-N66W刷机

热门文章

  1. 计算机编程方式有哪些,如何自学编程?有什么方法
  2. android realm 分页,iOS Realm数据持久化--Realm基础知识 (一)
  3. python中正则表达以及多线程,建立服务器端
  4. 载货汽车主减速器设计(说明书+CAD图纸+开题报告+任务书+外文翻译……)
  5. 定义iframe 引用页透明 allowTransparency=true
  6. ABC198 E - Unique Color(dfs)
  7. python删除列_python删掉数据表几列的方法
  8. python数据分析大作业-python数据分析大作业
  9. EPLAN报表设备元件添加,清单生成
  10. python+opencv:边缘提取-Sobel operator