【原创】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;
 	    	}
	    }
 }

界面如下

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java术语,意为Java媒体框架(JMF)。该核心框架支持不同媒体(如:音频输出和视频输出)间的时钟同步。它是一个标准的扩展框架,允许用户制作纯音频流和视频流。 JMF实际上是Java的一个类包。JMF 2.1.1技术提供了先进的媒体处理能力,从而扩展了Java平台的功能。这些功能包括:媒体捕获、压缩、流转、回放,以及对各种主要媒体形式和编码的支 持,如M-JPEG、H.263、MP3、RTP/RTSP (实时传送协议和实时流转协议)、Macromedias Flash、IBM的HotMedia和Beatniks的Rich Media Format (RMF)等。JMF 2.1.1还支持广受欢迎的媒体类型,如Quicktime、Microsofts AVI和MPEG-1等。此外,JMF 2.1.1软件中包括了一个开放的媒体架构,可使开发人员灵活采用各种媒体回放、捕获组件,或采用他们自己的定制的内插组件。 Sun以四种不同的专用版本提供JMF 2.1.1技术,满足专业开发人员的各类需求,第一个是一个轻便型版本,它完全采用Java语言编写,适用于任何Java兼容系统。此外,开发人员还可选 择分别适用于Solaris、Windows或Linux等操作系统的性能最优化软件包,以提高性能和能力。 JMF 2.1.1软件也是Java Media系列软件的一部分。Java Media系列软件包括Java 3D、Java 2D、Java Sound和Java Advanced Imaging等API。采用各种Java Media API,软件开发商人员就能容易、快速地为他们已有的各种应用程序和客户端Java小程序增添丰富的媒体功能,如流式视频、3D图像和影像处理等。就是 说,各种Java Media API发挥了Java平台的固有优势,将"编写一次,到处运行"的能力扩展到了图像、影像和数字媒体等各种应用领域,从而大大缩减了开发时间和降低了开发 成本。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值