java如何实现简单音乐播放器
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了java如何实现简单音乐播放器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下主要是用到java中的swi
千家信息网最后更新 2026年11月02日java如何实现简单音乐播放器
这篇文章主要介绍了java如何实现简单音乐播放器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
具体内容如下
主要是用到java中的swing技术,以及JMFjar中的API
备注:需要用JDK1.8才能播放音乐MP3
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:/Users/Administrator/Music/卓依婷 - 萍聚.mp3"; 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.getYear()+"年"+now.getMonth()+"月"+now.getDate()+"日"+now.getTime()); shijian.setText("当前时间:"+(new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date())+" 严楷"); 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如何实现简单音乐播放器"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
文件
选择
音乐
目录
建议
篇文章
路径
播放器
实例
按钮
格式
模式
歌曲
时间
价值
兴趣
内容
卓依婷
同时
备注
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司怎么样
中关村互联网 科技集团
湖南永感互联网科技有限公司
厦门中拓互联网络科技有限公司
互联网下的科技发展
善班互联网科技
碳银互联网科技有限公司
四个字互联网科技公司取名
互联网科技创新企业排名
互联网之后的科技是什么
福州新华互联网科技学校 知乎
荆州市昕露互联网络科技有限公司
辽宁互联网新科技
996高科技互联网公司
互联网营销推广黑科技
互联网科技手抄报图片
科技互联网专业务虚会材料
宁波允成互联网科技有限公司
互联网高科技绘画
广州全民伙伴互联网科技有限公司
凡科互联网科技
奇酷互联网络科技公司
佩信高科技互联网
中盈科技互联网信息有限公司
消费医药和互联网科技
保险科技服务互联网营销体系
每天都有哪些好的互联网科技
智帮互联网科技公司最近动向
山东大美朱楼互联网科技有限公司
杭州科技互联网公司有哪些