千家信息网

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如何实现简单音乐播放器"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0