用JMF编写MP3音乐播放器2:MP3文件工程的建立和源代码——少尉系列.doc_第1页
用JMF编写MP3音乐播放器2:MP3文件工程的建立和源代码——少尉系列.doc_第2页
用JMF编写MP3音乐播放器2:MP3文件工程的建立和源代码——少尉系列.doc_第3页
用JMF编写MP3音乐播放器2:MP3文件工程的建立和源代码——少尉系列.doc_第4页
用JMF编写MP3音乐播放器2:MP3文件工程的建立和源代码——少尉系列.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何用JMF编写MP3音乐播放器2MP3文件工程的建立和源代码做完上面1的所有步骤之后,说明你已经把JMF的环境配置完毕,接下来我们就可以进行MP3的java文件的编写了。首先我们先建立一个java Projet文件然后在java Project文件中建立一个文件夹,但是这个文件夹不是普通的文件夹(普通文件夹只用来存放数据或文件),而是需要建立一个【Source Folder】文件夹,该文件夹可以对内部文件进行编译和处理,我们所要编写的MP3文件就需要放在该文件夹下面。在此我特别说几个注意事项:(1)、我们创建MediaPlayer的时候,它对应的包为:importjavax.media.bean.playerbean.MediaPlayer;但是该包不会自动的导入,所以这个包必须我们手动添加,不然会报程序错误(2)我们需要验证一下我们导入的JMF包和环境配置是否成功,我们发现在已经导入和jmf.jar和sound.jar(3)JMF没有内置的MP3播放的插件,需要根据oracle官网上的说明安装这个才能使用。JMF并不包含对MP3文件的解码,我们要播放MP3文件,就需要一个MP3的解码器,而这个解码器我们可以下载,大小只有几十KB,我们在【百度】搜索【JMF MP3 Plugin】,如图:我们选择第二个,点击打开如下页面:我们点击【DownLoad】进行相关下载。或者在:/downloads565/sourcecode/java/detail2326572.html进行下载JMF MP3 Plugin该插件下载后,直接把该文件放在JDK的目录下即可。下面是源代码:import java.awt.BorderLayout;import java.awt.Component;import java.awt.FileDialog;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.util.Vector;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JSplitPane;import javax.swing.SwingUtilities;import javax.media.ControllerEvent;import javax.media.MediaLocator;import javax.media.RealizeCompleteEvent;import javax.media.bean.playerbean.MediaPlayer;public class cuiPM3 private static final long serialVersionUID = 1L; / 序列化,为了实现网络传输private static MediaPlayer MyPlayer;private static String filename = d:和你一样.mp3;private static JFrame framePlay = null;private static JPanel panelPlay = null;private static JPanel panelList = null;private static JList listPlay = null;private static Vector vectorPlay = null;private static JMenuBar menuBar=null;private static JSplitPane SplitPanel=null;private static ActionListener openFile = new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubFileDialog fd = new FileDialog(framePlay, 选择歌曲, FileDialog.LOAD); / 打开选择文件的选择框,提示框名为选个歌曲,/ this代表主类fd.setVisible(true); / 显示选择框filename = fd.getDirectory() + fd.getFile(); / 文件名称=获取此文件对话框的目录+文件名System.out.println(filename);if (filename.equals() return; else if (filename.equals(nullnull) return;boolean j = false;for (int i = 0; i vectorPlay.size(); i+) if (vectorPlay.get(i).toString().equals(filename) / 如果数组里面的数据和文件名一样,则直接结束不添加j = true;break;if (j = false) vectorPlay.add(filename); / 将文件名添加至动态数组里面listPlay.setListData(vectorPlay); / 列表框的数据添加动态数组;private static ActionListener closeFile = new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubSystem.exit(0);private static ActionListener playMusic = new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubplay();private static ActionListener stopMusic = new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubstop();public cuiPM3() initialize();/ 初始状态private void initialize() / TODO Auto-generated method stubprotected static void play() / TODO Auto-generated method stubtry if (filename.equals() return;if (MyPlayer = null) MyPlayer = new MediaPlayer(); else closePreviosPlayer();MyPlayer.setMediaLocator(new MediaLocator(file:/ + filename); /建立一个播放器的定位时间/MyPlayer.addControllerListener(framePlay);MyPlayer.realize(); /MyPlayer.start(); / 开始播放歌曲 catch (Exception e) private static void closePreviosPlayer() / TODO Auto-generated method stubif (MyPlayer = null)return;MyPlayer.stop();MyPlayer.deallocate(); / 停止播放并且重新装载DateSourceComponent visual = MyPlayer.getVisualComponent(); /* * player.getVisualComponent * ()是一个播放所有视频媒体的可视组件。 */Component control = MyPlayer.getControlPanelComponent(); /* * player. * getControlPanelComponent * ( * )是一个操作时间轴的可是组建 * , * 也包含了一些媒体的其他信息 * 。 */if (visual != null) panelPlay.remove(visual);if (control != null) panelPlay.remove(control);protected static void stop() / TODO Auto-generated method stubMyPlayer.stop();MyPlayer.deallocate();/*public synchronized void controllerUpdate(ControllerEvent event) / Player状态控制if (event instanceof RealizeCompleteEvent) Component comp;if (comp = MyPlayer.getControlPanelComponent() != null) / 操作时间轴不为空,就将其添加在面板最低端panelPlay.add(South, comp); else closePreviosPlayer();if (comp = MyPlayer.getVisualComponent() != null) / 可视化面板不为空就将其添加至居中panelPlay.add(Center, comp);validate();*/private void validate() / TODO Auto-generated method stubprivate static MouseListener mouseAction=new MouseListener() Overridepublic void mouseClicked(MouseEvent e) / TODO Auto-generated method stubif (e.getClickCount() = 1) / getClickCount鼠标监听事件,如果鼠标单击一次String str = (String) listPlay.getSelectedValue();if (str = null) return;filename = str;/System.out.println(str);/ 如果单击一次则输出在他的歌曲名称if (e.getClickCount() = 2) / 如果鼠标单击两次String str = (String) listPlay.getSelectedValue(); / str接受鼠标选取的列表框中的值if (str = null) / 如果为空,怎么什么都不做,否则开始播放str接受的歌曲return;filename = str;play();Overridepublic void mousePressed(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseReleased(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseEntered(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseExited(MouseEvent e) / TODO Auto-generated method stub;public static void main(String args) SwingUtilities.invokeLater(new Runnable() /个匿名内部类,runnable()是应用在多线程中的。它的实例化就默认调用了一个run()方法。public void run() framePlay = new JFrame(我自己的MP3播放器);framePlay.setBounds(200, 100, 1100, 580);framePlay.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);framePlay.setResizable(false);/ 将最大化按钮的作用取消panelPlay = new JPanel(); / 创建一个左面的播放面板panelList = new JPanel(); / 创建一个右面的列表面板ImageIcon image=new ImageIcon(image/beijing.jpg);JLabel labelImage=new JLabel(image);panelPlay.add(labelImage,BorderLayout.WEST);SplitPanel = new JSplitPane();/ 创建一个可分割的面板,用于将面板分为一左一右两个面板SplitPanel.setDividerSize(5); / 设置分格条的大小SplitPanel.setResizeWeight(0.01); / 设置分割的比例SplitPanel.setEnabled(false); /固定分割条不可左右SplitPanel.setRightComponent(panelList); / 为分割的右面板添加播放列表面板SplitPanel.setLeftComponent(panelPlay); / 为分割的左面板添加播放面板listPlay = new JList(); / 定义一个列表框listPlay.addMouseListener(mouseAction);JLabel labelList=new JLabel(播放列表);panelList.add(labelList,BorderLayout.NORTH);vectorPlay = new Vector(); / 定义一个动态数组,用于接受我们添加的歌曲的列表panelList.add(listPlay);/ 将列表框添加至列表面板menuBar = new JMenuBar(); / 定义一个空白的菜单条JMenu menu = n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论