用Java實現(xiàn)簡單音樂播放器

用Java實現(xiàn)簡單音樂播放器

長沙達內教育      2022-04-04 06:42:01     5

用Java實現(xiàn)簡單音樂播放器,本文實例為大家分享了java實現(xiàn)簡單音樂播放器的具體代碼,供大家參考,具體內容如下主要是用到java中的swing技術,以及JMFjar中

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹



本文實例為大家分享了java實現(xiàn)簡單音樂播放器的具體代碼,供大家參考,具體內容如下


主要是用到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("循環(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盤沒有保存音樂文件");   //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("[Ss]*.mp3")|| yy.matches("[Ss]*.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("[Ss]*.mp3")|| yy.matches("[Ss]*.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("[Ss]*.mp3")|| yy.matches("[Ss]*.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實現(xiàn)簡單音樂播放器”的內容,希望對大家有幫助,更多java面試題請繼續(xù)關注長沙達內教育java培訓機構官網(wǎng),每天會精彩內容分享與你

培訓啦提醒您:交易時請核實對方資質,對于過大宣傳或承諾需謹慎!任何要求預付定金、匯款等方式均存在風險,謹防上當。