专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 用Java实现简单音乐播放器

用Java实现简单音乐播放器

更新时间:2019-10-14 09:07:13 来源:动力节点 浏览2608次



本文实例为大家分享了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培训机构小编分享的“用Java实现简单音乐播放器”的内容,希望对大家有帮助,更多java面试题请继续关注动力节点java培训机构官网,每天会精彩内容分享与你

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>