VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • java实现播放音乐-JLayer

不久前,接了一个单子,用java的swing实现一个如下的功能

image-20210827171756876

其实增删改查都好实现,主要是java怎么播放MP3音乐。然后去百度,发现了一个人家造好的轮子---JLayer。导入jar包调用相关的api即可,下面记录一下使用方法。

1 下载JLayer的jar包

点击下载

2 创建java项目

准备一个MP3文件放入src的文件夹下

image-20210827173044986

3 编写测试代码

【TestJlayer.java】



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
package com.qy.jlayer; import java.io.File; import java.io.FileInputStream; import javazoom.jl.player.Player; public class TestJlayer { public static void main(String[] args) throws Exception{ File file = new File("src/1.mp3"); Player player = new Player(new FileInputStream(file)); player.play();//播放音乐 //player.close();//停止音乐 } }

4 常用api总结

image-20210827173553935

5 注意

可以看到这个工具包的使用很简单,但是play() 这个方法是阻塞式的,也就同步的,程序运行的时候,音乐不放完代码是不会往下走的,这在swing开发中就会存在一种问题,在播放音乐的时候如果想切换音乐或者停止音乐,按钮是点击不了的。我的解决方案是单独启动一个线程来播放音乐。

伪代码如下:


复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
public class MusicIndexFrm extends JFrame { //第一步定义 private Player player ;//播放对象 private Music playMusic;//正在播放的音乐,如果没有则为null 这个Music类是自己封装的,里面定义了音乐相关信息,比如歌名,路径等 //第二步:核心在这里 自定义线程类,来播放音乐 private class MyRunnable implements Runnable{//1.实现Runnable接口 public void run() {//2.重写run方法 try { if(null != player){player.close();}//如果有音乐在播放先关闭,一次只放一首歌 player = new Player(new FileInputStream(new File(playMusic.getPath()))); player.play();//播放 } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (JavaLayerException e1) { e1.printStackTrace(); } } } //第三步:通过线程去播放音乐而不是直接调用play()方法 Music music = new Music(id, name, formats, singer, path); playMusic = music;//将正在播放的音乐保存 //播放音乐,此处要启动一个线程去播放,不然窗口动不了 new Thread(new MyRunnable()).start(); }

参考:https://blog.csdn.net/xietansheng/article/details/85056358

本文作者:贺刘芳

本文链接:https://www.cnblogs.com/helf/p/15194821.html



相关教程