溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

java如何實(shí)現(xiàn)簡(jiǎn)單音樂(lè)播放器

發(fā)布時(shí)間:2021-09-27 09:24:58 來(lái)源:億速云 閱讀:177 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了java如何實(shí)現(xiàn)簡(jiǎn)單音樂(lè)播放器,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

具體內(nèi)容如下

主要是用到j(luò)ava中的swing技術(shù),以及JMFjar中的API

備注:需要用JDK1.8才能播放音樂(lè)MP3

package baidu; import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;import javax.swing.*;import javax.media.bean.playerbean.*; //這個(gè)包要用到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簡(jiǎn)單音樂(lè)播放器--嚴(yán)楷"); 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("開(kāi)始播放"); loopSound = new JButton("循環(huán)播放"); 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盤(pán)沒(méi)有保存音樂(lè)文件");  //e.printStackTrace(); }  baocun.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent event) {  JFileChooser fileChooser = new JFileChooser(); // 實(shí)例化文件選擇器  fileChooser   .setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 設(shè)置文件選擇模式,此處為文件和目錄均可  if (fileChooser.showSaveDialog(MP3.this) == JFileChooser.APPROVE_OPTION) { // 彈出文件選擇器,并判斷是否點(diǎn)擊了打開(kāi)按鈕   String fileName = fileChooser.getSelectedFile()    .getAbsolutePath(); // 得到選擇文件或目錄的絕對(duì)路徑   mmm(vector, mingcheng, fileName);  }  } }); duqu.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent event) {  JFileChooser fileChooser = new JFileChooser(); // 實(shí)例化文件選擇器  fileChooser   .setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 設(shè)置文件選擇模式,此處為文件和目錄均可  if (fileChooser.showOpenDialog(MP3.this) == JFileChooser.APPROVE_OPTION) { // 彈出文件選擇器,并判斷是否點(diǎn)擊了打開(kāi)按鈕   String fileName = fileChooser.getSelectedFile()    .getAbsolutePath(); // 得到選擇文件或目錄的絕對(duì)路徑   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,     "播放文件格式的有錯(cuò),無(wú)法播放 建議刪除");   } else   JOptionPane.showMessageDialog(null,    "此歌曲文件已經(jīng)不存在,建議刪除");  }  else   JOptionPane.showMessageDialog(null, "請(qǐng)選擇音樂(lè)文件");  } }); 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,     "播放文件格式的有錯(cuò),無(wú)法播放 建議刪除");   } else   JOptionPane.showMessageDialog(null,    "此歌曲文件已經(jīng)不存在,建議刪除");   }  else   JOptionPane.showMessageDialog(null, "請(qǐng)選擇音樂(lè)文件");  } }); 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(); // 實(shí)例化文件選擇器  fileChooser   .setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 設(shè)置文件選擇模式,此處為文件和目錄均可  fileChooser.setCurrentDirectory(new File(".")); // 設(shè)置文件選擇器當(dāng)前目錄  fileChooser   .setFileFilter(new javax.swing.filechooser.FileFilter() {    public boolean accept(File file) { // 可接受的文件類(lèi)型    String name = file.getName().toLowerCase();    return name.endsWith(".mp3")     || file.isDirectory();    }    public String getDescription() { // 文件描述    return "音樂(lè)文件(*.mp3)";    }   });  if (fileChooser.showOpenDialog(MP3.this) == JFileChooser.APPROVE_OPTION) { // 彈出文件選擇器,并判斷是否點(diǎn)擊了打開(kāi)按鈕   String fileName = fileChooser.getSelectedFile()    .getAbsolutePath(); // 得到選擇文件或目錄的絕對(duì)路徑   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,     "播放文件格式的有錯(cuò),無(wú)法播放 建議刪除");   } else    JOptionPane.showMessageDialog(null,     "此歌曲文件已經(jīng)不存在,建議刪除");    }  }  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("當(dāng)前時(shí)間: " + now.getYear()+"年"+now.getMonth()+"月"+now.getDate()+"日"+now.getTime());  shijian.setText("當(dāng)前時(shí)間:"+(new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date())+"  嚴(yán)楷");  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;} }

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“java如何實(shí)現(xiàn)簡(jiǎn)單音樂(lè)播放器”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI