基于java的音乐播放器的设计源代码+实验报告Word格式文档下载.docx
《基于java的音乐播放器的设计源代码+实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于java的音乐播放器的设计源代码+实验报告Word格式文档下载.docx(23页珍藏版)》请在冰点文库上搜索。
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("
\\3.jpg"
privateImageIconiconNext=newImageIcon("
\\2.jpg"
privateImageIconiconPause=newImageIcon("
\\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.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
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
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:
ListItemitem=newListItem(file.getName(),file.getAbsolutePath());
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)
btnPlay.setIcon(iconPause);
else
player.stop();
isPause=true;
System.out.println("
暂停"
btnPlay.setIcon(iconPlay);
publicvoidnext()
if(currentIndex==listModel.getSize()-1)
currentIndex=0;
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)));
publicvoidpre()
if(currentIndex==0)
currentIndex=listModel.getSize()-1;
currentIndex--;
//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<
size;
i++)
ListItemitem=(ListItem)ois.readObject();
dlm.addElement(item);
ois.close();
returndlm;
catch(FileNotFoundExceptione)
e.print