全国统一服务热线

173-8280-2081

新闻中心

当前位置:首页>新闻中心

用Java实现简单音乐播放器

本文实例为大家分享了java实现简单音乐播放器的具体代码,供大家参考,具体内容如下

主要是用到java中的swing技术,以及JMFjar中的API

备注:需要用JDK1.8才能播放音乐MP3

packagebaidu;

importjava.awt.*;

importjava.awt.event.*;

importjava.io.*;

importjava.util.*;

importjavax.swing.*;

importjavax.media.bean.playerbean.*;//这个包要用到JMF

publicclassMP3extendsJFrameimplementsRunnable{

publicJLabelshijian;

privateJSlidersldDiameter;

publicMediaPlayersoumd1;

publicJButtonplaySound,loopSound,stopsound;

publicJButtontjian,shanc,baocun,duqu;

publicJPaneljp1,jp2,jp3,jp4;

publicJListjl;

intzongmiao=0;

publicVectorvector,mingcheng;

booleanfo=false,geshi=false;

JLabeljl1,jl2,sj1,sj2;

JTextFieldjt1,jt2;

JButtonqueding,xiugai;

intzong=0;

inta=0,b=0,you=1,mm=0;

intfenzhong,miaozhong;

publicMP3(){

super("java简单音乐播放器--严楷");

soumd1=newMediaPlayer();

Containerc=getContentPane();

c.setLayout(newFlowLayout());

mingcheng=newVector();

jp1=newJPanel();

shijian=newJLabel();

jp1.add(shijian);

c.add(jp1);

playSound=newJButton("开始播放");

loopSound=newJButton("循环播放");

stopsound=newJButton("停止播放");

jp2=newJPanel();

jp2.add(playSound);

jp2.add(loopSound);

jp2.add(stopsound);

c.add(jp2);

jp4=newJPanel();

sj1=newJLabel();

sj2=newJLabel();

sldDiameter=newJSlider(SwingConstants.HORIZONTAL,0,100,0);

sldDiameter.setMajorTickSpacing(1);

sldDiameter.setPaintTicks(true);

jp4.add(sj1);

jp4.add(sldDiameter);

jp4.add(sj2);

c.add(jp4);

vector=newVector();

jl=newJList(mingcheng);

jl.setVisibleRowCount(5);

jl.setFixedCellHeight(40);

jl.setFixedCellWidth(265);

jl.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

c.add(newJScrollPane(jl));

tjian=newJButton("添加");

shanc=newJButton("删除");

duqu=newJButton("读取");

baocun=newJButton("保存");

jp3=newJPanel();

jp3.add(tjian);

jp3.add(shanc);

jp3.add(baocun);

jp3.add(duqu);

c.add(jp3);

try{

Strings="C:/Users/Administrator/Music/卓依婷-萍聚.mp3";

ObjectInputStreaminput=newObjectInputStream(

newFileInputStream(s));

lujina1=(lujin)input.readObject();

mingcheng=a1.b;

vector=a1.a;

jl.setListData(mingcheng);

}catch(Exceptione){

System.out.println("c盘没有保存音乐文件");

//e.printStackTrace();

}

baocun.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEventevent){

JFileChooserfileChooser=newJFileChooser();//实例化文件选择器

fileChooser

.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//设置文件选择模式,此处为文件和目录均可

if(fileChooser.showSaveDialog(MP3.this)==JFileChooser.APPROVE_OPTION){//弹出文件选择器,并判断是否点击了打开按钮

StringfileName=fileChooser.getSelectedFile()

.getAbsolutePath();//得到选择文件或目录的路径

mmm(vector,mingcheng,fileName);

}

}

});

duqu.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEventevent){

JFileChooserfileChooser=newJFileChooser();//实例化文件选择器

fileChooser

.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//设置文件选择模式,此处为文件和目录均可

if(fileChooser.showOpenDialog(MP3.this)==JFileChooser.APPROVE_OPTION){//弹出文件选择器,并判断是否点击了打开按钮

StringfileName=fileChooser.getSelectedFile()

.getAbsolutePath();//得到选择文件或目录的路径

try{

ObjectInputStreaminput=newObjectInputStream(

newFileInputStream(fileName));

lujina1=(lujin)input.readObject();

mingcheng=a1.b;

vector=a1.a;

jl.setListData(mingcheng);

}catch(Exceptione){

e.printStackTrace();

}

}

}

});

playSound.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

if(jl.getSelectedIndex()>=0){

Stringyy=(String)vector.get(jl.getSelectedIndex());

Fileff=newFile(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(InterruptedExceptioneee){

}

zongmiao=(int)soumd1.getDuration().getSeconds();

if(zongmiao>10000)

{

try{

Thread.sleep(500);

}catch(InterruptedExceptionew){

}

zongmiao=(int)soumd1.getDuration().getSeconds();

}

zongmiao=(int)soumd1.getDuration().getSeconds();

Stringaa=fen(zongmiao);

sj2.setText(aa);

}else

JOptionPane.showMessageDialog(null,

"播放文件格式的有错,无法播放建议删除");

}else

JOptionPane.showMessageDialog(null,

"此歌曲文件已经不存在,建议删除");

}

else

JOptionPane.showMessageDialog(null,"请选择音乐文件");

}

});

loopSound.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

if(jl.getSelectedIndex()>=0){

Stringyy=(String)vector.get(jl.getSelectedIndex());

Fileff=newFile(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(InterruptedExceptionwe){

}

zongmiao=(int)soumd1.getDuration().getSeconds();

if(zongmiao>10000)

{

try{

Thread.sleep(500);

}catch(InterruptedExceptionwe){

}

zongmiao=(int)soumd1.getDuration().getSeconds();

}

zongmiao=(int)soumd1.getDuration().getSeconds();

Stringaa=fen(zongmiao);

sj2.setText(aa);

}else

JOptionPane.showMessageDialog(null,

"播放文件格式的有错,无法播放建议删除");

}else

JOptionPane.showMessageDialog(null,

"此歌曲文件已经不存在,建议删除");

}

else

JOptionPane.showMessageDialog(null,"请选择音乐文件");

}

});

stopsound.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

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(newActionListener(){

publicvoidactionPerformed(ActionEventevent){

JFileChooserfileChooser=newJFileChooser();//实例化文件选择器

fileChooser

.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//设置文件选择模式,此处为文件和目录均可

fileChooser.setCurrentDirectory(newFile("."));//设置文件选择器当前目录

fileChooser

.setFileFilter(newjavax.swing.filechooser.FileFilter(){

publicbooleanaccept(Filefile){//可接受的文件类型

Stringname=file.getName().toLowerCase();

returnname.endsWith(".mp3")

||file.isDirectory();

}

publicStringgetDescription(){//文件描述

return"音乐文件(*.mp3)";

}

});

if(fileChooser.showOpenDialog(MP3.this)==JFileChooser.APPROVE_OPTION){//弹出文件选择器,并判断是否点击了打开按钮

StringfileName=fileChooser.getSelectedFile()

.getAbsolutePath();//得到选择文件或目录的路径

vector.add(fileName);

StringBufferbuffer=daoxu(fileName);

mingcheng.add(buffer);

}

}

});

shanc.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEventevent){

if(jl.getSelectedIndex()>=0){

mingcheng.removeElementAt(jl.getSelectedIndex());

vector.removeElementAt(jl.getSelectedIndex());

jl.setListData(mingcheng);

}

}

});

jl.addMouseListener(newMouseAdapter(){

publicvoidmousePressed(MouseEventevent){

if(event.getClickCount()==2){

if(jl.getSelectedIndex()>=0){

Stringyy=(String)vector.get(jl.getSelectedIndex());

Fileff=newFile(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(InterruptedExceptione){

}

zongmiao=(int)soumd1.getDuration().getSeconds();

if(zongmiao>10000)

{

try{

Thread.sleep(500);

}catch(InterruptedExceptione){

}

zongmiao=(int)soumd1.getDuration().getSeconds();

}

Stringaa=fen(zongmiao);

sj2.setText(aa);

}else

JOptionPane.showMessageDialog(null,

"播放文件格式的有错,无法播放建议删除");

}else

JOptionPane.showMessageDialog(null,

"此歌曲文件已经不存在,建议删除");

}

}

if(event.isMetaDown()){

if(jl.getSelectedIndex()>=0){

inta=jl.getSelectedIndex();

xiugaix=newxiugai();

jt1.setText(mingcheng.get(jl.getSelectedIndex())+"");

jt2.setText(vector.get(jl.getSelectedIndex())+"");

}

}

}

});

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

Strings="c:\\music.txt";

mmm(vector,mingcheng,s);

System.exit(0);

}

});

setSize(300,400);

setVisible(true);

}

publicvoidrun(){

while(true){

Datenow=newDate();

//shijian.setText("当前时间:"+now.getYear()+"年"+now.getMonth()+"月"+now.getDate()+"日"+now.getTime());

shijian.setText("当前时间:"+(newjava.text.SimpleDateFormat("yyyy-MM-ddHH:mm:ss")).format(newDate())+"严楷");

try{

Thread.sleep(1000);

}catch(InterruptedExceptione){

}

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;

}

}

}

}

publicStringBufferdaoxu(StringfileName){

Stringmc="";

for(inti=fileName.length();i>=1;i--){

if(fileName.charAt(i-1)=='\\')

break;

mc+=fileName.charAt(i-1);

}

StringBufferbuffer=newStringBuffer(mc);

StringBuffermm=buffer.reverse();

returnmm;

}

publicvoidmmm(Vectorvector,Vectormingcheng,Stringlujin){

lujina=newlujin(vector,mingcheng);

try{

ObjectOutputStreamoutput=newObjectOutputStream(newFileOutputStream(lujin));

output.writeObject(a);

output.flush();

output.close();

}catch(Exceptione){

}

}

publicStringfen(intyy){

fenzhong=(int)yy/60;

miaozhong=(int)yy%60;

Stringsss=fenzhong+":"+miaozhong;

returnsss;

}

publicstaticvoidmain(Stringagrs[]){

MP3s=newMP3();

Threadt1=newThread(s);

t1.start();

s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

classxiugaiextendsJFrame{

publicxiugai(){

jl1=newJLabel("文件名");

jt1=newJTextField(20);

jl2=newJLabel("文件路径");

jt2=newJTextField(20);

xiugai=newJButton("修改");

Containerc=getContentPane();

c.setLayout(newGridLayout(3,1));

JPanelj1=newJPanel();

JPanelj2=newJPanel();

JPanelj3=newJPanel();

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(newActionListener(){

publicvoidactionPerformed(ActionEventevent){

mingcheng.setElementAt(jt1.getText(),jl.getSelectedIndex());

vector.setElementAt(jt2.getText(),jl.getSelectedIndex());

jl.setListData(mingcheng);

dispose();

}

});

setSize(300,120);

setVisible(true);

}

}

}

classlujinimplementsSerializable{

Vectora=newVector();

Vectorb=newVector();

publiclujin(Vectorvector,Vectormingcheng){

a=vector;

b=mingcheng;

}


QQ咨询
在线咨询
在线报名
173-8280-2081
173-8280-2081
返回顶部