【原创】JAVA开发的小音乐播放器


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;
 	    	}
	    }
 }

界面如下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值