简易的本地音乐播放器 适用于Java初学者

我知道肯定会有人说都1202年了怎么还有人在用AudioClip,没有别的原因,因为我也刚学Java,刚好看到一个这样的教程就刚好写了一个这样的播放器。
我用的eclipse写的程序,一共有4个类,相应的音频文件和界面背景图片自己下载。注意:音频文件只能是.wav文件,可以去网上下载MP3文件然后用格式工厂转换格式。

代码绝对有用,已经用过了,但是由于比较简易,整体比较粗糙很多功能无法实现,我也是初学者,所以整体代码可能有很多不够好的地方求大佬们轻喷
使用缺陷:
1.开始播放只能播放第一首歌曲,我这里是《晴天》;
2.点击歌曲按钮只能点击一次,切歌只能点击下一首,或者点击暂停播放然后自己点击一首歌曲播放;
3.循环播放问题比较多,写的比较随便,只能在已经播放歌曲的状 态下点击,而且循环播放之后无法暂停播放只能退出;
界面设计借鉴参考了这篇文章

链接: link.

图片:


图片文件放在包里面了;

代码直接粘贴复制就能用了,但是写的很粗糙

MusicPlayer类

import java.util.Scanner;import java.applet.*;
import java.awt.Frame;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.*;public class MusicPlayer {private static AudioClip ac;public static void player(int a,int b) throws MalformedURLException,InterruptedException {Scanner input=new Scanner(System.in);JApplet applate = new JApplet();URL urlAudio;String x;switch(a){case 1:x="D:\\FFOutput\\周杰伦 - 晴天.wav";File f = new File(x);urlAudio = f.toURL();ac = Applet.newAudioClip(urlAudio);ac.stop();ac.play();Title_1.n =2;Thread.sleep(2000);System.out.println("正在播放《晴天》");break;case 2:x="D:\\FFOutput\\蜡笔小心 - MOM.wav";f = new File(x);urlAudio = f.toURL();ac = Applet.newAudioClip(urlAudio);ac.stop();ac.play();Title_1.n =3;Thread.sleep(2000);System.out.println("正在播放《MOM》");break;case 3:x="D:\\FFOutput\\星辰大海 - 黄霄云.wav";f = new File(x);urlAudio = f.toURL();ac = Applet.newAudioClip(urlAudio);ac.stop();ac.play();Title_1.n =4;Thread.sleep(2000);System.out.println("正在播放《星辰大海》");break;case 4:x="D:\\FFOutput\\回到夏天.wav";f = new File(x);urlAudio = f.toURL();ac = Applet.newAudioClip(urlAudio);ac.stop();ac.play();Title_1.n =5;Thread.sleep(2000);System.out.println("正在播放《回到夏天》");break;case 5:x="D:\\FFOutput\\大籽-白月光与朱砂痣.wav";f = new File(x);urlAudio = f.toURL();ac = Applet.newAudioClip(urlAudio);ac.stop();ac.play();Title_1.n =6;Thread.sleep(2000);System.out.println("正在播放《白月光与朱砂痣》");break;case 6:x="D:\\FFOutput\\欢 - 刘大壮.wav";f = new File(x);urlAudio = f.toURL();ac = Applet.newAudioClip(urlAudio);ac.stop();ac.play();Title_1.n =7;Thread.sleep(2000);System.out.println("正在播放《欢》");break;case 7:x="D:\\FFOutput\\四季予你 - 程响.wav";f = new File(x);urlAudio = f.toURL();ac = Applet.newAudioClip(urlAudio);ac.stop();ac.play();Title_1.n =8;Thread.sleep(2000);System.out.println("正在播放《四季予你》");break;case 8:x="D:\\FFOutput\\夏天的风.wav";f = new File(x);urlAudio = f.toURL();ac = Applet.newAudioClip(urlAudio);ac.stop();ac.play();Title_1.n =9;Thread.sleep(2000);System.out.println("正在播放《夏天的风》");break;case 9:x="D:\\FFOutput\\爱,存在.wav";f = new File(x);urlAudio = f.toURL();ac = Applet.newAudioClip(urlAudio);ac.stop();ac.play();Title_1.n =10;Thread.sleep(2000);System.out.println("正在播放《爱,存在》");break;case 10:x="D:\\FFOutput\\飞鸟和蝉.wav";f = new File(x);urlAudio = f.toURL();ac = Applet.newAudioClip(urlAudio);ac.play();Title_1.n =1;Thread.sleep(2000);System.out.println("正在播放《飞鸟和蝉》");break;case 11:ac.stop();player(b,0);Thread.sleep(1000);break;case 12://ac.stop();player(1,0);Thread.sleep(1000);break;}}public static void stop(){ac.stop();}public static void run1() throws InterruptedException{((Thread) ac).yield();}public static String getLoad(){String x=null;switch(Title_1.n-1){case 1:x="D:\\FFOutput\\周杰伦 - 晴天.wav";break;case 2:x="D:\\FFOutput\\蜡笔小心 - MOM.wav";break;case 3:x="D:\\FFOutput\\星辰大海 - 黄霄云.wav";break;case 4:x="D:\\FFOutput\\回到夏天.wav";break;case 5:x="D:\\FFOutput\\大籽-白月光与朱砂痣.wav";break;case 6:x="D:\\FFOutput\\欢 - 刘大壮.wav";break;case 7:x="D:\\FFOutput\\四季予你 - 程响.wav";break;case 8:x="D:\\FFOutput\\夏天的风.wav";break;case 9:x="D:\\FFOutput\\爱,存在.wav";break;case 10:x="D:\\FFOutput\\飞鸟和蝉.wav";break;}ac.stop();Loop.loop(x,0);System.out.println("正在循环播放该歌曲");return x;}}

界面设计类


import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.applet.AudioClip;
import java.io.*;
import java.applet.Applet;
import java.awt.Button;
import java.awt.Color;
import java.awt.Font;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;public class Title_1 extends JFrame {public static int n=0;public Title_1() throws MalformedURLException, InterruptedException {super("栗子猪播放器"); //设置标题int num=1;setSize(1080, 1080); //设置大小,setLocation(550, 200); //设置位置setResizable(false); //窗体大小固定String path = "src/itle_1.jpg"; //背景图片的路径。(相对路径或者绝对路径。本例图片放于"java项目名"的文件下)ImageIcon background = new ImageIcon(path); // 背景图片JLabel label = new JLabel(background); // 把背景图片显示在一个标签里面label.setBounds(0, 0, this.getWidth(), this.getHeight()); // 把标签的大小位置设置为图片刚好填充整个面板JPanel imagePanel = (JPanel) this.getContentPane(); // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明imagePanel.setOpaque(false);this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE)); // 把背景图片添加到分层窗格的最底层作为背景File title_music;URI uri_t1;URL url_t1;setLayout(null); //清空布局JButton b1=new JButton("-开始播放-"); //设置按钮名字b1.setFont(new Font("黑体", Font.PLAIN,25)); //设置按钮中的字体属性b1.setBounds(285,150,170,70); //设置按钮位置,及按钮大小b1.setContentAreaFilled(false); //设置按钮透明b1.setForeground(Color.BLACK); //设置前景色add(b1);JButton b2=new JButton("-退出-");b2.setFont(new Font("黑体", Font.PLAIN,25));b2.setBounds(625,150,170,70);b2.setContentAreaFilled(false); b2.setForeground(Color.BLACK); add(b2);JButton b10=new JButton("暂停播放");b10.setFont(new Font("黑体", Font.PLAIN,25));b10.setBounds(370,750,170,70);b10.setContentAreaFilled(false); b10.setForeground(Color.BLACK); add(b10);JButton b3=new JButton("-下一首-");b3.setFont(new Font("黑体", Font.PLAIN,25));b3.setBounds(455,150,170,70);b3.setContentAreaFilled(false);b3.setForeground(Color.BLACK);add(b3);JButton b4=new JButton("《晴天》");b4.setFont(new Font("黑体", Font.PLAIN,25));b4.setBounds(370,300,170,70);b4.setContentAreaFilled(false);b4.setForeground(Color.BLACK);add(b4);    JButton b5=new JButton("《MOM》");b5.setFont(new Font("黑体", Font.PLAIN,25));b5.setBounds(540,300,170,70);b5.setContentAreaFilled(false);b5.setForeground(Color.BLACK);add(b5);JButton b6=new JButton("《星辰大海》");b6.setFont(new Font("黑体", Font.PLAIN,25));b6.setBounds(370,370,170,70);b6.setContentAreaFilled(false);b6.setForeground(Color.BLACK);add(b6);JButton b7=new JButton("《回到夏天》");b7.setFont(new Font("黑体", Font.PLAIN,25));b7.setBounds(540,370,170,70);b7.setContentAreaFilled(false);b7.setForeground(Color.BLACK);add(b7);JButton b8=new JButton("《白月光与朱砂痣》");b8.setFont(new Font("黑体", Font.PLAIN,25));b8.setBounds(370,440,170,70);b8.setContentAreaFilled(false);b8.setForeground(Color.BLACK);add(b8);JButton b9=new JButton("《欢》");b9.setFont(new Font("黑体", Font.PLAIN,25));b9.setBounds(540,440,170,70);b9.setContentAreaFilled(false);b9.setForeground(Color.BLACK);add(b9);JButton b11=new JButton("《四季予你》");b11.setFont(new Font("黑体", Font.PLAIN,25));b11.setBounds(370,510,170,70);b11.setContentAreaFilled(false);b11.setForeground(Color.BLACK);add(b11);JButton b12=new JButton("《夏天的风》");b12.setFont(new Font("黑体", Font.PLAIN,25));b12.setBounds(540,510,170,70);b12.setContentAreaFilled(false);b12.setForeground(Color.BLACK);add(b12);JButton b13=new JButton("《爱,存在》");b13.setFont(new Font("黑体", Font.PLAIN,25));b13.setBounds(370,580,170,70);b13.setContentAreaFilled(false);b13.setForeground(Color.BLACK);add(b13);JButton b14=new JButton("《飞鸟和蝉》");b14.setFont(new Font("黑体", Font.PLAIN,25));b14.setBounds(540,580,170,70);b14.setContentAreaFilled(false);b14.setForeground(Color.BLACK);add(b14);JButton b15=new JButton("循环播放");b15.setFont(new Font("黑体", Font.PLAIN,25));b15.setBounds(540,750,170,70);b15.setContentAreaFilled(false); b15.setForeground(Color.BLACK); add(b15);myEvent1(b9,6,0);myEvent1(b4,1,0);myEvent1(b5,2,0);myEvent1(b6,3,0);myEvent1(b7,4,0);myEvent1(b8,5,0);myEvent1(b11,7,0);myEvent1(b12,8,0);myEvent1(b13,9,0);myEvent1(b14,10,0);myEvent1(b3,n,1);//myEvent1(b12,n,0);myEvent(b2);myEvent3(b10);myEvent4(b1);myEvent5(b15);//myEvent5(b3);setVisible(true); //刷新并设置可见setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点关闭按钮时退出}private void myEvent1(JButton b,final int m,int a) throws InterruptedException{if(a==0){n=m;b.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try {MusicPlayer.player(m,0);//System.out.println("n="+n+"m="+m);} catch (MalformedURLException | InterruptedException e1) {// TODO 自动生成的 catch 块e1.printStackTrace();}}});}if(a==1){//MusicPlayer.stop();b.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try {//final int x=n;MusicPlayer.player(11,n);} catch (MalformedURLException | InterruptedException e1) {// TODO 自动生成的 catch 块e1.printStackTrace();}}});}}private void myEvent3(JButton b){b.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){System.out.println("停止播放");MusicPlayer.stop();}});}private void myEvent(JButton b){b.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){System.out.println("退出播放器");System.exit(0);}});}private void myEvent4(JButton b){b.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try {//MusicPlayer.stop();MusicPlayer.player(12,0);}catch (MalformedURLException | InterruptedException e1) {// TODO 自动生成的 catch 块e1.printStackTrace();}}});}private void myEvent5(JButton b){b.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){MusicPlayer.getLoad();}});}}

循环播放是今天加上去的所以加了一个类
LOOP类

import java.applet.Applet;
import java.applet.AudioClip;
import java.io.File;
import java.net.URI;
import java.net.URL;public class Loop {public static void loop(String x,int a){File title_music;URI uri_t1;URL url_t1;try{title_music = new File(x); //将背景音乐放入缓冲区uri_t1 = title_music.toURI();url_t1 = uri_t1.toURL(); //解析地址AudioClip aau; aau = Applet.newAudioClip(url_t1);aau.loop(); //循环播放}catch (Exception e){e.printStackTrace();} }
}

测试类

import java.net.MalformedURLException;public class Test {public static void main(String[] args) throws MalformedURLException, InterruptedException{//new AwtDemo();Title_1 a=new Title_1();//MusicPlayer p=new MusicPlayer();}
}

最后,做的确实很粗糙,因为我也刚学,希望各位大佬们多多指导,代码也写得比较乱老师们望见谅。
本人第一篇博客写的不好哈哈哈哈别太介意

简易的本地音乐播放器 适用于Java初学者相关推荐

  1. unity开发简易的本地音乐播放器

    由于项目需要,做了个简单的本地音乐播放器demo,记录一下,万一以后就用到了. UI不方便贴图,只贴关键功能的代码. 功能1:从本地选择音频文件. 这部分代码是在网上搜索到的,由于不知道原创是哪位前辈 ...

  2. 我的音乐(Musicoco)- 本地音乐播放器开发总结

    开源一个功能相对齐全的本地音乐播放器 简述 从五月末就开始利用空余时间开发这款 app ,不知不觉三个月过去了. App 名称:我的音乐,我给取了个别名:Musicoco. Android 手机本地音 ...

  3. 炫 音乐可视化 html5 在线,HTML5打造的炫酷本地音乐播放器-喵喵Player

    将之前捣腾的音乐频谱效果加上一个播放列表就成了现在的喵喵播放器(Meow meow Player,额知道这名字很二很装萌~),全HTML5打造的网页程序,可本地运行也可以挂服务器上用. 在线Demo及 ...

  4. 用JavaScript实现简易的网页音乐播放器

    用JavaScript实现简易的网页音乐播放器 最近疫情在家,利用这段时间开始自学HTML等内容,目前在写自己的个人主页,想用音乐来给自己的主页增添点特色. 一开始单纯用audio标签添加音乐,带上a ...

  5. 基于Phonon的本地音乐播放器

    基于Phonon的本地音乐播放器 之前逛博客的时候偶然看到一个音乐播放器的小项目,于是这两天也动手写了一个基于Phonon的本地音乐播放器.使用版本为Qt4.7.3. 目前的功能不多,界面也比较丑.后 ...

  6. 本地音乐播放器(JavaFX-SoPlayer)

    大二学java一个多月了,正好2.14情人节想做的点什么东西,于是心血来潮写了个粉嫩粉嫩的播放器布局(这个也放github里面了),后来一发不可收拾不断改进,前后近三个星期遂步进新世界. 基于Java ...

  7. Android 编程案例-本地音乐播放器源码及使用注意事项

    说一下代码在用的时候注意事项以及在运行的时候可能遇到的问题: 首先代码可以在创建相应文件后直接复制,这个案例用到了RecyclerView,所以需要先添加依赖.添加下面两个: implementati ...

  8. C#制作简单的本地音乐播放器(二)—— 显示歌词

    此篇文章主要补充 C#制作简单的本地音乐播放器(一) 中的"歌词显示"部分的内容. 页面设计部分 相关内容 本程序使用的歌词文件为lrc格式,lrc是英文lyric(歌词)的缩写, ...

  9. [HTML5]简单网页本地音乐播放器

    既然HTML5提出与本地交互方便,就想写个HTML5的本地音乐播放器.一开始问题主要集中在怎么读取本地文件路径,我想肯定可以用JS实现去操作本地文件(因为node.js很容易实现读取本地文件,但是原生 ...

最新文章

  1. Spring Data JPA 五分钟快速入门和实践
  2. 2018-3-13 目标改动---智能算法
  3. 【Python】全面掌握Python基础,这一篇就够了,建议收藏
  4. 关于Linux的虚拟内存管理
  5. 全选、取消全选、单选
  6. windows Service 之调试过程
  7. opencv 梯度幅值_OpenCV学习:图像边缘检测
  8. MySQL 效能监控工具--mysqlreport -转
  9. java实训报告_Java实验报告三
  10. 新中大财务软件V5.08安装
  11. 腾讯x5内核使用方法 手动安装 全网最简单
  12. pip install numpy 安装numpy失败
  13. QT5+VS201: QTCharts:设置坐标轴间隔以及标注
  14. 李佩:阿里本地生活线上线下融合场景中的图像检测技术
  15. Coolpad(酷派) 进入手机工厂模式
  16. CA证书下载以及导出公私钥教程
  17. 《活出生命的意义》节选
  18. adb 命令连接天天,海马,mumu,逍遥游模拟器
  19. 前端——知乎APP“我的收藏”勾选优化想法
  20. 阿里云视频点播(VOD)控制台上传慢解决方案

热门文章

  1. .NET基础-11-ArrayList|Hashtable|File文件操作|Dircetioy文件夹操作|Path路径操作
  2. windbg的k命令
  3. 煤炭行业管理平台解决方案,生产全过程价值管理,降本增效
  4. iRobot 推出 Create 3,内置 ROS 2 机器人开发平台(转载)
  5. 解决Win10安装DirectX报错:不能信任一个安装所需的压缩文件,请检查加密服务是否启用并且Cabinet文件证书是否有效
  6. C-means聚类算法实战 — 地表植被分类/数字聚类
  7. [SpringCould篇]之断路器(Hystrix)
  8. 如何通俗理解信创国产化是什么意思?有哪些系统?有什么意义?
  9. git 删除分支和删除文件夹
  10. Nginx日志格式配置-转载