java音乐播放器编写源码

发布时间 - 2026-01-11 01:43:53    点击率:

本文实例为大家分享了java音乐播放器的具体代码,供大家参考,具体内容如下

源码:

package baidu;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.media.bean.playerbean.*; //这个包要用到JMF

public class MP3 extends JFrame implements Runnable {
public JLabel shijian;

private JSlider sldDiameter;

public MediaPlayer soumd1;

public JButton playSound, loopSound, stopsound;

public JButton tjian, shanc, baocun, duqu;

public JPanel jp1, jp2, jp3, jp4;

public JList jl;

int zongmiao=0;

public Vector vector, mingcheng;

boolean fo = false, geshi = false;

JLabel jl1, jl2, sj1, sj2;

JTextField jt1, jt2;

JButton queding, xiugai;

int zong = 0;

int a = 0, b = 0, you = 1,mm=0;

int fenzhong, miaozhong;

public MP3() {
 super("java简单音乐播放器");
 soumd1 = new MediaPlayer();
 Container c = getContentPane();
 c.setLayout(new FlowLayout());
 mingcheng = new Vector();
 jp1 = new JPanel();
 shijian = new JLabel();
 jp1.add(shijian);
 c.add(jp1);
 playSound = new JButton("开始播放");
 loopSound = new JButton("循环播放");
 stopsound = new JButton("停止播放");
 jp2 = new JPanel();
 jp2.add(playSound);
 jp2.add(loopSound);
 jp2.add(stopsound);
 c.add(jp2);
 jp4 = new JPanel();
 sj1 = new JLabel();
 sj2 = new JLabel();
 sldDiameter = new JSlider(SwingConstants.HORIZONTAL, 0, 100, 0);
 sldDiameter.setMajorTickSpacing(1);
 sldDiameter.setPaintTicks(true);
 jp4.add(sj1);
 jp4.add(sldDiameter);
 jp4.add(sj2);
 c.add(jp4);
 vector = new Vector();
 jl = new JList(mingcheng);
 jl.setVisibleRowCount(5);
 jl.setFixedCellHeight(40);
 jl.setFixedCellWidth(265);
 jl.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 c.add(new JScrollPane(jl));
 tjian = new JButton("添加");
 shanc = new JButton("删除");
 duqu = new JButton("读取");
 baocun = new JButton("保存");
 jp3 = new JPanel();
 jp3.add(tjian);
 jp3.add(shanc);
 jp3.add(baocun);
 jp3.add(duqu);
 c.add(jp3);

 try {
  String s = "c:\music.txt";
  ObjectInputStream input = new ObjectInputStream(
   new FileInputStream(s));
  lujin a1 = (lujin) input.readObject();
  mingcheng = a1.b;
  vector = a1.a;
  jl.setListData(mingcheng);
 } catch (Exception e) {
  System.out.println("c盘没有保存音乐文件");
  //e.printStackTrace();
 }

 baocun.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent event) {
  JFileChooser fileChooser = new JFileChooser(); // 实例化文件选择器
  fileChooser
   .setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 设置文件选择模式,此处为文件和目录均可
  if (fileChooser.showSaveDialog(MP3.this) == JFileChooser.APPROVE_OPTION) { // 弹出文件选择器,并判断是否点击了打开按钮
   String fileName = fileChooser.getSelectedFile()
    .getAbsolutePath(); // 得到选择文件或目录的绝对路径
   mmm(vector, mingcheng, fileName);
  }
  }
 });
 duqu.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent event) {
  JFileChooser fileChooser = new JFileChooser(); // 实例化文件选择器
  fileChooser
   .setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 设置文件选择模式,此处为文件和目录均可
  if (fileChooser.showOpenDialog(MP3.this) == JFileChooser.APPROVE_OPTION) { // 弹出文件选择器,并判断是否点击了打开按钮
   String fileName = fileChooser.getSelectedFile()
    .getAbsolutePath(); // 得到选择文件或目录的绝对路径
   try {
   ObjectInputStream input = new ObjectInputStream(
    new FileInputStream(fileName));
   lujin a1 = (lujin) input.readObject();
   mingcheng = a1.b;
   vector = a1.a;
   jl.setListData(mingcheng);
   } catch (Exception e) {
   e.printStackTrace();
   }
  }
  }
 });
 playSound.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
  if (jl.getSelectedIndex() >= 0) {
   String yy = (String) vector.get(jl.getSelectedIndex());
   File ff = new File(yy);
   if (ff.exists()) {
   if (yy.matches("[\S\s]*.mp3")|| yy.matches("[\S\s]*.MP3")) {
    if (soumd1 != null) {
    a = 0;
    b = 0;
    you = 0;
    soumd1.stop();
    }
     soumd1.setMediaLocation("file:/" + yy);
    fo = true;
    soumd1.start();
    geshi=true;
    try {
    Thread.sleep(500);
    } catch (InterruptedException eee) {
    }
    zongmiao=(int)soumd1.getDuration().getSeconds();
    if(zongmiao>10000)
    {
    try {
     Thread.sleep(500);
    } catch (InterruptedException ew) {
    }
    zongmiao=(int)soumd1.getDuration().getSeconds();
    }
    zongmiao=(int)soumd1.getDuration().getSeconds();
    String aa=fen(zongmiao);
     sj2.setText(aa);
   } else
    JOptionPane.showMessageDialog(null,
     "播放文件格式的有错,无法播放 建议删除");
   } else
   JOptionPane.showMessageDialog(null,
    "此歌曲文件已经不存在,建议删除");
  }
  else
   JOptionPane.showMessageDialog(null, "请选择音乐文件");
  }
 });
 loopSound.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
  if (jl.getSelectedIndex() >= 0) {
   String yy = (String) vector.get(jl.getSelectedIndex());
   File ff = new File(yy);
   if (ff.exists()) {
   if (yy.matches("[\S\s]*.mp3")|| yy.matches("[\S\s]*.MP3")) {
    if (soumd1 != null) {
    a = 0;
    b = 0;
    you = 0;
    soumd1.stop();
    }
     soumd1.setMediaLocation("file:/" + yy);
    fo = true;
    soumd1.start();
    geshi=true;
    try {
    Thread.sleep(500);
    } catch (InterruptedException we) {
    }
    zongmiao=(int)soumd1.getDuration().getSeconds();
    if(zongmiao>10000)
    {
    try {
     Thread.sleep(500);
    } catch (InterruptedException we) {
    }
    zongmiao=(int)soumd1.getDuration().getSeconds();
    }
    zongmiao=(int)soumd1.getDuration().getSeconds();
    String aa=fen(zongmiao);
     sj2.setText(aa);
   } else
    JOptionPane.showMessageDialog(null,
     "播放文件格式的有错,无法播放 建议删除");
   } else
   JOptionPane.showMessageDialog(null,
    "此歌曲文件已经不存在,建议删除");

  }
  else
   JOptionPane.showMessageDialog(null, "请选择音乐文件");
  }
 });
 stopsound.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
  a = 0;
  b = 0;
  you = 0;
  mm=0;
  geshi=false;
  fo = false;
  sldDiameter.setMaximum(100);
  sldDiameter.setValue(0);
  sj1.setText(null);
  sj2.setText(null);
  if (jl.getSelectedIndex() >= 0)
   soumd1.stop();

  }
 });
 tjian.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent event) {
  JFileChooser fileChooser = new JFileChooser(); // 实例化文件选择器
  fileChooser
   .setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 设置文件选择模式,此处为文件和目录均可
  fileChooser.setCurrentDirectory(new File(".")); // 设置文件选择器当前目录
  fileChooser
   .setFileFilter(new javax.swing.filechooser.FileFilter() {
    public boolean accept(File file) { // 可接受的文件类型
    String name = file.getName().toLowerCase();
    return name.endsWith(".mp3")
     || file.isDirectory();
    }
    public String getDescription() { // 文件描述
    return "音乐文件(*.mp3)";
    }
   });
  if (fileChooser.showOpenDialog(MP3.this) == JFileChooser.APPROVE_OPTION) { // 弹出文件选择器,并判断是否点击了打开按钮
   String fileName = fileChooser.getSelectedFile()
    .getAbsolutePath(); // 得到选择文件或目录的绝对路径
   vector.add(fileName);
   StringBuffer buffer = daoxu(fileName);
   mingcheng.add(buffer);
  }
  }
 });
 shanc.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent event) {
  if (jl.getSelectedIndex() >= 0) {
   mingcheng.removeElementAt(jl.getSelectedIndex());
   vector.removeElementAt(jl.getSelectedIndex());
   jl.setListData(mingcheng);
  }
  }
 });
 jl.addMouseListener(new MouseAdapter() {
  public void mousePressed(MouseEvent event) {
  if (event.getClickCount() == 2) {
   if (jl.getSelectedIndex() >= 0) {
   String yy = (String) vector.get(jl.getSelectedIndex());
   File ff = new File(yy);
   if (ff.exists()) {
    if (yy.matches("[\S\s]*.mp3")|| yy.matches("[\S\s]*.MP3")) {
    if (soumd1 != null) {
     a = 0;
     b = 0;
     you = 0;
     soumd1.stop();
    }
      soumd1.setMediaLocation("file:/" + yy);
    fo = true;
    soumd1.start();
    geshi=true;
    try {
     Thread.sleep(500);
    } catch (InterruptedException e) {
    }
    zongmiao=(int)soumd1.getDuration().getSeconds();
    if(zongmiao>10000)
    {
     try {
     Thread.sleep(500);
     } catch (InterruptedException e) {
     }
    zongmiao=(int)soumd1.getDuration().getSeconds();
    }
    String aa=fen(zongmiao);
      sj2.setText(aa);
    } else
    JOptionPane.showMessageDialog(null,
     "播放文件格式的有错,无法播放 建议删除");
   } else
    JOptionPane.showMessageDialog(null,
     "此歌曲文件已经不存在,建议删除");

   }
  }
  if (event.isMetaDown()) {
   if (jl.getSelectedIndex() >= 0) {
   int a = jl.getSelectedIndex();
   xiugai x = new xiugai();
   jt1.setText(mingcheng.get(jl.getSelectedIndex()) + "");
   jt2.setText(vector.get(jl.getSelectedIndex()) + "");
   }
  }
  }
 });
 addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
  String s = "c:\music.txt";
  mmm(vector, mingcheng, s);
  System.exit(0);
   }
 });
 setSize(300, 400);
 setVisible(true);
}

public void run() {
 while (true) {
  Date now = new Date();
  shijian.setText("当前时间: " + now.toString());
  try {
  Thread.sleep(1000);
  } catch (InterruptedException e) {
  }
  if(geshi){
  you=(int)soumd1.getMediaTime().getSeconds();
  mm =you%60;
   if(you!=0)
  if(you%60==0)
  {
   b++;
  }
   sj1.setText(b+":"+mm);
  sldDiameter.setMaximum(zongmiao);
  if(you!=zongmiao)
   sldDiameter.setValue(you);
  else {
   sldDiameter.setValue(0);
  mm=0;
    b=0;
  }
  }
 }
}

public StringBuffer daoxu(String fileName) {
 String mc = "";
 for (int i = fileName.length(); i >= 1; i--) {
  if (fileName.charAt(i - 1) == '\')
  break;
  mc += fileName.charAt(i - 1);
 }
 StringBuffer buffer = new StringBuffer(mc);
 StringBuffer mm = buffer.reverse();
 return mm;
}

public void mmm(Vector vector, Vector mingcheng, String lujin) {
 lujin a = new lujin(vector, mingcheng);
 try {
  ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(lujin));
  output.writeObject(a);
  output.flush();
  output.close();
 } catch (Exception e) {

 }
}
public String fen(int yy) {
  fenzhong = (int) yy / 60;
  miaozhong = (int) yy % 60;
  String sss = fenzhong + ":" + miaozhong;
  return sss;
}

public static void main(String agrs[]) {
 MP3 s = new MP3();
 Thread t1 = new Thread(s);
 t1.start();
 s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

class xiugai extends JFrame {
 public xiugai() {
  jl1 = new JLabel("文件名");
  jt1 = new JTextField(20);
  jl2 = new JLabel("文件路径");
  jt2 = new JTextField(20);
  xiugai = new JButton("修改");
  Container c = getContentPane();
  c.setLayout(new GridLayout(3, 1));
  JPanel j1 = new JPanel();
  JPanel j2 = new JPanel();
  JPanel j3 = new JPanel();
  j1.add(jl1);
  j1.add(jt1);
  j2.add(jl2);
  j2.add(jt2);
  j3.add(xiugai);
  c.add(j1);
  c.add(j2);
  c.add(j3);
  xiugai.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent event) {
   mingcheng.setElementAt(jt1.getText(), jl.getSelectedIndex());
   vector.setElementAt(jt2.getText(), jl.getSelectedIndex());
   jl.setListData(mingcheng);
   dispose();
  }
  });
  setSize(300, 120);
  setVisible(true);
 }
}
}

class lujin implements Serializable {

Vector a = new Vector();

Vector b = new Vector();

public lujin(Vector vector, Vector mingcheng) {
 a = vector;
 b = mingcheng;
}

}


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java音乐播放器  # java音乐播放  # java播放器  # java音乐播放器源码  # 教你轻松制作java音乐播放器  # java实现简单音乐播放器  # java 实现音乐播放器的简单实例  # java音乐播放器实现代码  # Java实现的简单音乐播放器功能示例  # 简单实现java音乐播放器  # 一个简单的Java音乐播放器  # java实现音乐播放器完整代码(调整显示音量大小、调整进度、图片切换)  # 选择器  # 弹出  # 均可  # 有错  # 无法播放  # 判断是否  # 播放器  # 已经不存在  # 请选择  # 要用  # 大家分享  # 具体内容  # 大家多多  # 可接受  # queding  # xiugai  # zong  # JTextField  # setLayout  # super 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现API资源集合?(Resource Collection教程)  Python图片处理进阶教程_Pillow滤镜与图像增强  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何用已有域名快速搭建网站?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  个人网站制作流程图片大全,个人网站如何注销?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  常州企业网站制作公司,全国继续教育网怎么登录?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  如何在万网主机上快速搭建网站?  如何用虚拟主机快速搭建网站?详细步骤解析  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  如何快速重置建站主机并恢复默认配置?  怎么用AI帮你设计一套个性化的手机App图标?  如何确保西部建站助手FTP传输的安全性?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  python中快速进行多个字符替换的方法小结  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  如何用y主机助手快速搭建网站?  如何在Windows环境下新建FTP站点并设置权限?  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  如何获取PHP WAP自助建站系统源码?  如何基于云服务器快速搭建网站及云盘系统?  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Android okhttputils现在进度显示实例代码  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  如何实现javascript表单验证_正则表达式有哪些实用技巧  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  网站建设保证美观性,需要考虑的几点问题!  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Python并发异常传播_错误处理解析【教程】  如何在服务器上三步完成建站并提升流量?  制作旅游网站html,怎样注册旅游网站?  php 三元运算符实例详细介绍  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  三星、SK海力士获美批准:可向中国出口芯片制造设备  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  实例解析Array和String方法  想要更高端的建设网站,这些原则一定要坚持!  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践