最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用java制作簡單的音樂播放器

 更新時間:2017年06月05日 11:42:19   作者:StrictModel  
這篇文章主要為大家詳細(xì)介紹了利用java的swing技術(shù)制作簡單的音樂播放器,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文主要是用到j(luò)ava中的swing技術(shù),以及JMFjar中的API,為大家分享了java音樂播放器的具體實現(xiàn)代碼,供大家參考,具體內(nèi)容如下

備注:需要用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簡單音樂播放器--嚴(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("開始播放");
 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); // 設(shè)置文件選擇模式,此處為文件和目錄均可
 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); // 設(shè)置文件選擇模式,此處為文件和目錄均可
 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,
  "此歌曲文件已經(jīng)不存在,建議刪除");
 }
 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,
  "此歌曲文件已經(jīng)不存在,建議刪除");

 }
 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); // 設(shè)置文件選擇模式,此處為文件和目錄均可
 fileChooser.setCurrentDirectory(new File(".")); // 設(shè)置文件選擇器當(dāng)前目錄
 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,
   "此歌曲文件已經(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)前時間: " + now.getYear()+"年"+now.getMonth()+"月"+now.getDate()+"日"+now.getTime());
 shijian.setText("當(dāng)前時間:"+(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;
}

} 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java生成訂單號或唯一id的高并發(fā)方案(4種方法)

    Java生成訂單號或唯一id的高并發(fā)方案(4種方法)

    本文主要介紹了Java生成訂單號或唯一id的高并發(fā)方案,包括4種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Java中的內(nèi)部類使用詳情

    Java中的內(nèi)部類使用詳情

    說起內(nèi)部類這個詞,想必很多人都不陌生,但是又會覺得不熟悉。原因是平時編寫代碼時可能用到的場景不多,用得最多的是在有事件監(jiān)聽的情況下,并且即使用到也很少去總結(jié)內(nèi)部類的用法。今天我們就來一探究竟
    2022-03-03
  • 歸并排序的實現(xiàn)代碼與思路

    歸并排序的實現(xiàn)代碼與思路

    歸并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個非常典型的應(yīng)用。
    2013-03-03
  • Java中的單向鏈表詳解

    Java中的單向鏈表詳解

    這篇文章主要介紹了Java中的單向鏈表詳解,單向鏈表又叫單鏈表,是鏈表的一種,由節(jié)點構(gòu)成,head指針指向第一個稱為表頭節(jié)點,而終止指向最后一個null指針,需要的朋友可以參考下
    2024-01-01
  • java計算時間差的方法

    java計算時間差的方法

    這篇文章主要介紹了java計算時間差的方法,涉及java針對時間的轉(zhuǎn)換與計算相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • SpringBoot中使用AOP打印接口日志的方法

    SpringBoot中使用AOP打印接口日志的方法

    本篇文章主要介紹了SpringBoot中使用AOP打印接口日志的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • IDEA連接mysql報錯的問題及解決方法

    IDEA連接mysql報錯的問題及解決方法

    這篇文章主要介紹了IDEA連接mysql報錯的問題及解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 軟件開發(fā)基礎(chǔ)之設(shè)計模式概述

    軟件開發(fā)基礎(chǔ)之設(shè)計模式概述

    這篇文章介紹了軟件開發(fā)基礎(chǔ)之設(shè)計模式,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • Java中大數(shù)據(jù)推薦算法使用場景分析

    Java中大數(shù)據(jù)推薦算法使用場景分析

    在Java中實現(xiàn)大數(shù)據(jù)推薦算法時,通常會使用一些開源的機(jī)器學(xué)習(xí)庫,如Apache Mahout、Weka、DL4J(DeepLearning4j,用于深度學(xué)習(xí))或者Spark MLlib(用于在Spark集群上運(yùn)行),這篇文章主要介紹了Java中可以用的大數(shù)據(jù)推薦算法,需要的朋友可以參考下
    2024-06-06
  • Dubbo無法訪問遠(yuǎn)程Zookeeper已注冊服務(wù)的問題解決方案

    Dubbo無法訪問遠(yuǎn)程Zookeeper已注冊服務(wù)的問題解決方案

    今天小編就為大家分享一篇關(guān)于Dubbo無法訪問遠(yuǎn)程Zookeeper已注冊服務(wù)的問題解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03

最新評論

北碚区| 从化市| 黄浦区| 巩留县| 喀什市| 甘肃省| 鹤岗市| 民乐县| 台前县| 云龙县| 公主岭市| 都兰县| 南澳县| 临洮县| 永昌县| 交口县| 荆门市| 内乡县| 灵宝市| 随州市| 尉犁县| 武川县| 鸡西市| 昆山市| 灵武市| 稻城县| 大关县| 岗巴县| 乐昌市| 唐山市| 苗栗县| 台南市| 奉新县| 锦州市| 双鸭山市| 铁力市| 贺兰县| 南阳市| 中西区| 安徽省| 安龙县|