eclipse开发的音乐播放器,利用了JMF包,实现播放,暂停,继续播放,停止功能,有播放列表,能自己选择播放哪个目录下的文件,加入了文件筛选器,会自动将该目录下支持的所有音频文件取出,形成播放列表
/*
* 程序操作说明:
* 点击菜单“文件”,选择“打开”选定在某目录下程序会将所有支持的音频文件取出,放在播放列表中,用鼠标双击文件开始播放或点击文件选择在点击播放按钮,点击暂停,暂停播放,在点击播放会继续播放
* 点击停止会停止播放按钮,点击关闭按钮会关闭程序
* 本程序支持的音频格式有au.wav.midi.rfm.aiff.MP3.mp2,本程序利用了JMF包,
* 运行前请下载jmf-2_1_1e-windows-i586.exe, 下载地址链接:http://删除pan.baidu.com/s/1pJjqN71 密码:pz58 安装,如出现 访问限制由于对必需的库XX具有一定限制,因此无法访问类型,请按如下办法解决
在项目上点击右键,找到构建路径。然后选择配置配置路径。按如下步骤来配置:
1 点击库选项
2把系统库扩展开来
3点击访问规则
4编辑访问规则
5 分辨率设为可访问
6规则模式设为**
7选择ok按钮
程序的基本结构:
text()为text类的构造函数,由它通过调用GUIInit函数完成界面的设计,而actionPerformed函数实现大部分程序功能。
GUIInit函数中的匿名类会完成鼠标单双击事件
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.media.*;
public class finalMidClass {
public static void main(String args[]) {
text MainInterface= new text();
}
}
class text extends JFrame implements ActionListener {
JPanel panel,panel1,panel2;
JMenuBar menubar;
JMenu menu1,menu2;
JMenuItem itemOpen,item2;
JButton playbutton,Pausebutton,Stopbutton,contbutton;
JLabel label1,label2,label3,label4;
List PlayList;
String filepath; //播放文件目录
String fildname; //文件名
String fild;
boolean isplaying=false;
boolean ispause =false;
Player player;
public text() {
setTitle(" kavs player");
setLayout(new GridLayout(2,1));
GUIInit();
setBounds(320,120,355,450);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//完成界面的设计
void GUIInit () {
panel=new JPanel();
panel1=new JPanel();
panel2=new JPanel();
label1=new JLabel(" written by peeramog ");
label1.setHorizontalAlignment(SwingConstants.CENTER);
label2=new JLabel("播放目录");
label3=new JLabel("播放列表");
label3.setHorizontalAlignment(SwingConstants.CENTER);
menubar =new JMenuBar();
menu1=new JMenu("文件 ");
menu2=new JMenu("帮助 ");
itemOpen=new JMenuItem("打开");
menu1.add(itemOpen);
itemOpen.addActionListener(this);
menubar.add(menu1);
menubar.add(menu2);
setJMenuBar(menubar);
panel.add(label2);
playbutton =new JButton("播放");
Pausebutton =new JButton("暂停");
Stopbutton =new JButton("停止");
playbutton.addActionListener(this);
Pausebutton.addActionListener(this);
Stopbutton.addActionListener(this);
panel1.add(Pausebutton);
panel1.add(playbutton);
panel1.add(Stopbutton);
panel.setSize(getPreferredSize());
panel.setBounds(30,30,355,200);
panel.setBackground(Color.green);
panel.setLayout(new BorderLayout());
panel.add(panel1,BorderLayout.CENTER);
panel.add(label1,BorderLayout.NORTH);
panel.add(label3,BorderLayout.SOUTH);
add(panel);
panel2.setBackground(Color.black);
panel2.setLayout(new BorderLayout());
PlayList =new List(10);
panel2.add(PlayList,BorderLayout.CENTER);
add(panel2);
validate();
PlayList.addMouseListener( new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==1) { //单击时处理
fildname = PlayList.getSelectedItem();
}
if (e.getClickCount()==2) { //双击时处理
//播放选中的文件
if(isplaying==true) {
player.stop();
player.setMediaTime(new Time(0));
}
fild = PlayList.getSelectedItem();
testplaying();
readerfile();
player.start();
isplaying=true;
}
}
});
}
//
// 以下完成事件的处理
public void actionPerformed(ActionEvent e) {
if(e.getSource()==itemOpen) {
FileDialog fd = new FileDialog(this, "打开媒体文件", FileDialog.LOAD);
fd.setVisible(true);
if (fd.getFile() == null) {
return;
}
// 保存了所选文件的名称及其路径名称
// 同时设置当前文件夹路径
fildname = fd.getFile();
filepath=fd.getDirectory();
if (filepath!=null) {
label2.setText("播放目录:" + fildname); //显示文件列表
PlayList.removeAll();
File filedir = new File(filepath);
File[] filelist = filedir.listFiles();
for (File Sfile : filelist) {
fild = Sfile.getName().toLowerCase();
if (fild.endsWith(".mp3")|| fild.endsWith(".wav")||fild.endsWith(".mid")||fild.endsWith(".au")||fild.endsWith(".midi")||fild.endsWith(".rfm")||fild.endsWith(".mp2")) {
PlayList.add(fild);
}
}
}
}
if(e.getSource()==playbutton) {
if (player!=null)
{
fild = PlayList.getSelectedItem();
if(ispause==true) {
player.start();
ispause=false;
}
else
{
testplaying();
readerfile();
player.start();
}
isplaying=true;
}
if (player==null) {
readerfile();
player.start();
isplaying=true;
}
return;
}
if(e.getSource()==Pausebutton) {
if (player != null) {
ispause=true;
player.stop();
}
return;
}
if(e.getSource()==Stopbutton) {
if (player != null) {
player.stop();
player.setMediaTime(new Time(0));
}
return;
}
}
public void readerfile() {
try {
fild= filepath+fildname;
player = Manager.createPlayer(new MediaLocator("file:" +fild));
}
catch(Exception e1) {
System.out.println(e1);
return;
}
}
public void testplaying() {
if(isplaying==true){
player.stop();
player.setMediaTime(new Time(0));
isplaying=false;
}
}
}
界面如下