`

【转】java编写的音乐播放器源码

 
阅读更多

原文来源:http://blog.sina.com.cn/s/blog_49b531af0100gt6g.html

 

java编写的音乐播放器源码

 

 

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:\\music.txt";
   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.toString());
   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音乐播放器源码是一个基于Eclipse开发的项目,它提供了在Java环境中实现音频播放功能的实例。这个项目对于学习Java编程,特别是涉及到GUI(图形用户界面)设计、多媒体处理和事件驱动编程的学生或者开发者来说,...

    java写的音乐播放器(含源码)

    Java编写的音乐播放器,如"YoYoPlayer"或"java Player",是利用Java编程语言实现的多媒体应用。这种播放器通常具有丰富的功能和友好的用户界面,旨在为用户提供流畅、便捷的音乐聆听体验。在Java中创建一个音乐...

    java音乐播放器源码/MP3播放器

    java 播放器 MP3 java 播放器 MP3 java 播放器 MP3 java 播放器 MP3 java 播放器 MP3 java 播放器 MP3 java 播放器 MP3 java 播放器 MP3 java 播放器 MP3

    java编写的播放器(含源码)

    【标题】"java编写的播放器(含源码)"所揭示的是一个使用Java编程语言开发的音频播放软件,它的核心特点在于其源代码是开放的,允许用户研究、学习和自定义。Java是一种跨平台的编程语言,这意味着这个播放器可以在...

    音乐播放器java源码

    音乐播放器是软件开发中的一个常见项目,尤其是在学习编程时,用Java编写音乐播放器是一个很好的实践案例。这个"音乐播放器java源码"提供了一种实现方式,可以帮助我们深入理解Java编程语言以及多媒体处理技术。下面...

    Java实现音乐播放器【碉堡版】源码

    掌握Java编程基本语法,用Java编写程序来解决一些实际问题,赋予学 员面向对象思想,充分理解并运用Java面向对象思想来进行程序开发, 实现开发者从过程时编程到面向对象编程的转变,实现Java编程完整化 ,理解多...

    JAVA版音乐播放器源代码

    在音乐播放器项目中,Java被用来编写服务器端和客户端的程序逻辑,保证了跨平台的兼容性。 服务器端是整个系统的核心部分,它负责处理来自客户端的请求,如用户的登录、注册、音乐搜索等操作。服务器端可能采用了...

    音乐播放器源码高仿Android多米

    Java是Android平台的主要开发语言,因此,这款音乐播放器源码使用Java编写,符合Android开发的标准。开发者可以通过阅读和分析源码,学习如何在Android环境下构建用户界面、处理音频流、实现媒体控制等关键功能。 ...

    Java音乐播放器源码

    【Java音乐播放器源码】项目是一个融合了爬虫技术、Java编程以及JavaFX图形用户界面(GUI)设计的应用程序。这个项目的核心目标是创建一个能够自动搜索并播放音乐的软件,用户界面友好且功能实用。 首先,我们要...

    仿QQ音乐播放器源码

    【仿QQ音乐播放器源码】是一个Android应用开发项目,旨在实现类似QQ音乐的应用功能,为开发者提供了一个学习和参考的实例。这个源码可能是由一位热心的开发者分享,他承诺会更新更多类似的源码资源,供社区成员学习...

    java编写的播放器,附源码

    Java编写的播放器是一款基于Java语言开发的多媒体播放软件,其源码的公开为开发者提供了学习和实践的机会。Java作为一种跨平台的编程语言,因其“一次编写,到处运行”的特性,使得它在开发桌面应用,尤其是需要跨...

    Java源码包100个设计实例.zip

    Java仿千千静听音乐播放器源代码.rar Java企业人事管理系统源码.rar java俄罗斯方块 java凭图游戏 Java利用DES私钥对称加密代码实例 Java加密解密工具集 JCT v1.0源码包.rar Java半透明图片实现的步骤及源代码.rar ...

    java Mp3播放器源码

    Java MP3播放器源码是一个实现音乐播放功能的软件项目,主要使用Java编程语言进行开发。这个播放器不仅具备基础的播放、暂停和切换歌曲的能力,还特别加入了歌词解析和同步显示的功能,使得用户在享受音乐的同时,...

    java编写炫酷界面音乐播放器

    总的来说,这款Java编写的炫酷界面音乐播放器展示了Java在GUI应用开发方面的强大能力,同时也提供了学习和借鉴的实例,对于Java开发者来说,无论是学习音乐播放器的实现原理还是提升GUI设计技巧,都是一个非常有价值...

    Java实现音乐播放器碉堡版源码.zip

    最后,为了实现跨平台运行,Java音乐播放器需要利用Java的“一次编写,到处运行”特性。这意味着源码必须遵循良好的平台无关性设计,确保在Windows、Mac OS和Linux等操作系统上都能正常运行。 总之,通过研究这个...

    Android 简易音乐播放器源码-IT计算机-毕业设计.zip

    这篇文档将深入解析《Android简易音乐播放器源码》这一毕业设计项目,旨在为学习Android应用开发的学生提供宝贵的参考资料。该源码是一个基础的音乐播放器应用,它展示了如何在Android平台上实现音频播放、控制以及...

    Java文件管理系统源码.zip

    Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 ...

    Java编写的通讯录源码

    Java 通讯录 源码 Java 通讯录 源码 Java 通讯录 源码 Java 通讯录 源码 Java 通讯录 源码

Global site tag (gtag.js) - Google Analytics