基于java的音乐播放器的设计源代码+实验报告.docx

上传人:b****4 文档编号:11903591 上传时间:2023-04-08 格式:DOCX 页数:23 大小:44.93KB
下载 相关 举报
基于java的音乐播放器的设计源代码+实验报告.docx_第1页
第1页 / 共23页
基于java的音乐播放器的设计源代码+实验报告.docx_第2页
第2页 / 共23页
基于java的音乐播放器的设计源代码+实验报告.docx_第3页
第3页 / 共23页
基于java的音乐播放器的设计源代码+实验报告.docx_第4页
第4页 / 共23页
基于java的音乐播放器的设计源代码+实验报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

基于java的音乐播放器的设计源代码+实验报告.docx

《基于java的音乐播放器的设计源代码+实验报告.docx》由会员分享,可在线阅读,更多相关《基于java的音乐播放器的设计源代码+实验报告.docx(23页珍藏版)》请在冰豆网上搜索。

基于java的音乐播放器的设计源代码+实验报告.docx

基于java的音乐播放器的设计源代码+实验报告

主类MUSICPLAYER类:

importjava.util.*;

importjavax.swing.JSlider;

importjava.awt.BorderLayout;

importjava.awt.FlowLayout;

importjava.awt.Point;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.MouseAdapter;

importjava.awt.event.MouseEvent;

importjava.io.BufferedOutputStream;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.ObjectInputStream;

importjava.io.ObjectOutputStream;

importjava.io.Serializable;

importjavax.media.ControllerEvent;

importjavax.media.ControllerListener;

importjavax.media.EndOfMediaEvent;

importjavax.media.Manager;

importjavax.media.MediaLocator;

importjavax.media.NoPlayerException;

importjavax.media.Player;

importjavax.media.PrefetchCompleteEvent;

importjavax.media.Time;

importjavax.swing.ButtonGroup;

importjavax.swing.DefaultListModel;

importjavax.swing.ImageIcon;

importjavax.swing.JButton;

importjavax.swing.JFileChooser;

importjavax.swing.JFrame;

importjavax.swing.JList;

importjavax.swing.JMenu;

importjavax.swing.JMenuBar;

importjavax.swing.JMenuItem;

importjavax.swing.JOptionPane;

importjavax.swing.JPanel;

importjavax.swing.JRadioButtonMenuItem;

importjavax.swing.JScrollBar;

importjavax.swing.JScrollPane;

importjavax.swing.filechooser.FileNameExtensionFilter;

publicclassMusicPlayerimplementsActionListener,Serializable,ControllerListener

{

privatestaticfinallongserialVersionUID=1L;

privateJFrameframe=null;

privateJPanelcontrolPanel=null;

privateJButtonbtnPlay=null;

privateJButtonbtnPre=null;

privateJButtonbtnNext=null;

privateJScrollPanelistPane=null;

privateJListlist=null;

privateDefaultListModellistModel=null;

privateJMenuBarmenubar=null;

privateJMenumenuFile=null,menuAbout=null,menuMode=null;

privateJMenuItemitemOpen,itemOpens,itemExit,itemAbout;

privateJRadioButtonMenuItemitemSingle,itemSequence,itemRandom;

privateListItemcurrentItem=null;

privatestaticPlayerplayer=null;

privatebooleanisPause=false;

privateintmode;

privateintcurrentIndex;

privateImageIconiconPlay=newImageIcon("d:

\\1.jpg");

privateImageIconiconPre=newImageIcon("d:

\\3.jpg");

privateImageIconiconNext=newImageIcon("d:

\\2.jpg");

privateImageIconiconPause=newImageIcon("d:

\\4.jpg");

publicstaticvoidmain(String[]args)

{

newMusicPlayer();

}

publicMusicPlayer()

{

init();

}

publicvoidinit()

{

frame=newJFrame();

frame.setTitle("音乐播放器");

frame.setSize(400,300);

frame.setResizable(false);

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

menubar=newJMenuBar();

menuFile=newJMenu("文件");

menuAbout=newJMenu("关于");

menuMode=newJMenu("播放模式");

itemOpen=newJMenuItem("添加文件");

itemOpens=newJMenuItem("添加文件夹");

itemExit=newJMenuItem("退出");

itemAbout=newJMenuItem("关于");

itemOpen.addActionListener(this);

itemOpens.addActionListener(this);

itemExit.addActionListener(this);

itemAbout.addActionListener(this);

itemSequence=newJRadioButtonMenuItem("顺序播放");

itemSequence.setSelected(true);

itemSingle=newJRadioButtonMenuItem("单曲循环");

itemSequence.addActionListener(this);

itemRandom=newJRadioButtonMenuItem("随机播放");

itemRandom.addActionListener(this);

itemSingle.addActionListener(this);

ButtonGroupbg=newButtonGroup();

bg.add(itemRandom);

bg.add(itemSequence);

bg.add(itemSingle);

menuFile.add(itemOpen);

menuFile.add(itemOpens);

menuFile.add(itemExit);

menuAbout.add(itemAbout);

menuMode.add(itemSequence);

menuMode.add(itemSingle);

menuMode.add(itemRandom);

menubar.add(menuFile);

menubar.add(menuAbout);

menubar.add(menuMode);

frame.setJMenuBar(menubar);

frame.setLayout(newBorderLayout());

controlPanel=newJPanel();

controlPanel.setLayout(newFlowLayout());

btnPlay=newJButton(iconPlay);

btnPre=newJButton(iconPre);

btnNext=newJButton(iconNext);

btnPlay.addActionListener(this);

btnPre.addActionListener(this);

btnNext.addActionListener(this);

controlPanel.add(btnPre);

controlPanel.add(btnPlay);

controlPanel.add(btnNext);

listPane=newJScrollPane();

listModel=load();

list=newJList(listModel);

if(list.getSelectedIndex()==-1&&listModel.size()>0)

{

currentItem=(ListItem)listModel.get(0);

list.setSelectedIndex(0);

currentIndex=0;

}

listPane.getViewport().add(list);

list.addMouseListener(newMouseAdapter()

{

publicvoidmouseClicked(MouseEvente)

{

if(e.getClickCount()==2)

{

if(player!

=null)

{

player.close();

btnPlay.setIcon(iconPlay);

}

currentIndex=list.locationToIndex(e.getPoint());

currentItem=(ListItem)listModel.get(currentIndex);

list.setSelectedIndex(currentIndex);

play();

}

}

});

frame.setLayout(newBorderLayout());

frame.add(controlPanel,BorderLayout.NORTH);

frame.add(listPane,BorderLayout.CENTER);

frame.setVisible(true);

};

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==itemOpen)

{//addfiles

JFileChooserjfc=newJFileChooser();

FileNameExtensionFilterfilter=newFileNameExtensionFilter("音乐文件","mp3","wav");

jfc.setFileFilter(filter);

jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);

jfc.setMultiSelectionEnabled(true);

if(jfc.showOpenDialog(frame)==JFileChooser.APPROVE_OPTION)

{

File[]files=jfc.getSelectedFiles();

for(Filef:

files)

{

ListItemitem=newListItem(f.getName(),f.getAbsolutePath());

listModel.addElement(item);

}

}

}

elseif(e.getSource()==itemOpens)

{//addfilesinadirectory

JFileChooserjfc=newJFileChooser();

jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

if(jfc.showOpenDialog(frame)==JFileChooser.APPROVE_OPTION)

{

Filedirectory=jfc.getSelectedFile();

File[]files=directory.listFiles(newjava.io.FileFilter()

{

publicbooleanaccept(Filef)

{

if(f.getName().toLowerCase().endsWith(".mp3")||f.getName().toLowerCase().endsWith(".wav"))

returntrue;

returnfalse;

}

});

for(Filefile:

files)

{

ListItemitem=newListItem(file.getName(),file.getAbsolutePath());

listModel.addElement(item);

}

save(listModel);

}

}

elseif(e.getSource()==itemExit)

{

System.exit(0);

}

elseif(e.getSource()==itemAbout)

{

JOptionPane.showMessageDialog(frame,"作者:

陆鑫");

}

elseif(e.getSource()==btnPlay)

{

//playorpause

play();

}

elseif(e.getSource()==btnPre)

{

pre();

}

elseif(e.getSource()==btnNext)

{//nextmusic

next();

}

elseif(e.getSource()==itemSequence)

{

mode=0;

}

elseif(e.getSource()==itemSingle)

{

mode=1;

}

elseif(e.getSource()==itemRandom)

{

mode=2;

}

}

//playcontrol

/**

  *播放

  */

publicvoidplay()

{

if(btnPlay.getIcon()==iconPlay)

{

if(isPause)

{

player.start();

System.out.println("暂停结束");

isPause=false;

}

else

{

try

{

player=Manager.createPlayer(newMediaLocator("file:

"+currentItem.getPath()));

player.addControllerListener(this);//提取媒体内容

player.prefetch();

}

catch(NoPlayerExceptione1)

{

e1.printStackTrace();

}

catch(IOExceptione1)

{

e1.printStackTrace();

}

}

btnPlay.setIcon(iconPause);

}

else

{

player.stop();

isPause=true;

System.out.println("暂停");

btnPlay.setIcon(iconPlay);

}

}

publicvoidnext()

{

if(currentIndex==listModel.getSize()-1)

{

currentIndex=0;

}

else

{

currentIndex++;

}

currentItem=(ListItem)listModel.get(currentIndex);

list.setSelectedIndex(currentIndex);

Pointp=list.indexToLocation(currentIndex);

JScrollBarjScrollBar=listPane.getVerticalScrollBar();//获得垂直转动条

jScrollBar.setValue(p.y);//设置垂直转动条位置

btnPlay.setIcon(iconPlay);

if(player!

=null)

player.close();

isPause=false;

play();

}

publicvoidrand()

{

list.setSelectedIndex((int)(Math.random()%(listModel.getSize()-1)));

Pointp=list.indexToLocation((int)(Math.random()%(listModel.getSize()-1)));

JScrollBarjScrollBar=listPane.getVerticalScrollBar();

jScrollBar.setValue(p.y);

btnPlay.setIcon(iconPlay);

if(player!

=null)

player.close();

isPause=false;

play();

}

publicvoidpre()

{

if(currentIndex==0)

{

currentIndex=listModel.getSize()-1;

}

else

{

currentIndex--;

}

currentItem=(ListItem)listModel.get(currentIndex);

list.setSelectedIndex(currentIndex);

Pointp=list.indexToLocation(currentIndex);

JScrollBarjScrollBar=listPane.getVerticalScrollBar();//获得垂直转动条

jScrollBar.setValue(p.y);//设置垂直转动条位置

btnPlay.setIcon(iconPlay);

if(player!

=null)

{

player.close();

}

isPause=false;

play();

}

//endplaycontrol

publicDefaultListModelload()

{

Filefile=newFile("list.lst");

DefaultListModeldlm=newDefaultListModel();

if(file.exists())

{

try

{

ObjectInputStreamois=newObjectInputStream(

newFileInputStream(file));

Integersize=(Integer)ois.readObject();

if(size!

=0)

{

for(inti=0;i

{

ListItemitem=(ListItem)ois.readObject();

dlm.addElement(item);

}

}

ois.close();

returndlm;

}

catch(FileNotFoundExceptione)

{

e.print

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1