java如何实现简单音乐播放器
发表于:2024-12-05 作者:千家信息网编辑
千家信息网最后更新 2024年12月05日,这篇文章主要介绍了java如何实现简单音乐播放器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下主要是用到java中的swi
千家信息网最后更新 2024年12月05日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安全错误
数据库的锁怎样保障安全
南京租车软件开发
hbase数据库如何操作
网络安全征文500字高中生
设置网络安全选择
长大之后要学习网络安全
全国数据库系统工程师
路由器ddns 虚拟服务器
计算机网络安全知识书籍
电力系统服务器教程
网络安全优化社区管理论文
东营智慧社区软件开发专业制作
北京地区服务器虚拟主机
网络安全公司如何盈利
数据库原理洛阳理工
服务器获取键盘硬件信息
传奇4登陆服务器断开
软件开发需求报告怎么写
服务器banner信息
服务器管理口识别
服务器能关机吗
4601服务器地址
智能边缘计算服务器厂家供应
中国4g网络技术
access数据库的创建
网络安全与民族复兴申论
摄像机云服务器
计算机网络技术介绍信英语
计算机网络技术选修3
不感兴趣可以从事软件开发
x86服务器芯片