⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainframe.java

📁 Java使用jmf来实现MP3的播放
💻 JAVA
字号:
package nmj.jmfplayer;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FileDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;

import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.RealizeCompleteEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


/**
 * A Simple Music Player Using JMF
 * 只实现了最简单的功能,而且没有任何异常处理
 * @author nmj
 *
 */
public class MainFrame extends JFrame{

	private static final long serialVersionUID = 1L;
	
	private JPanel mainPanel;
	private JButton open,stop;
	private JLabel message;
	/*
	 * File Chooser Dialog
	 */
	private FileDialog fileDialog;
	/*
	 * The music file you want to play
	 */
	private File file;
	/*
	 * The total path of the music file
	 * eg:c://music/aaa.mp3
	 */
	private String filePosition;
	/*
	 * The name of the file
	 * eg:aaa.mp3
	 */
	private String fileName;
	/*
	 * This object is from JMF(javax.media.Player)
	 */
	private Player player;
	/*
	 * 播放音乐的控制器
	 * 实现了音量调节和调整进度等
	 * 由JMF实现
	 */
	private Component control;
	
	public MainFrame(){
		super();
		setTitle("JMFPlayer");
		setSize(400,80);
		/*
		 * 设置窗口大小不可改变
		 */
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		initialize();
		setVisible(true);
	}

	/*
	 * 界面设计功能,实现按钮监听
	 */
	private void initialize() {
		mainPanel = new JPanel();
		open = new JButton("打开");
		open.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent event) {
				try {
					openFile();
				} catch (NoPlayerException e) {
					e.printStackTrace();
				} catch (MalformedURLException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		});
		stop = new JButton("结束");
		stop.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent event) {
				stopPlayer();
			}
		});
		message = new JLabel("Welcome to use the most simple music player!");
		mainPanel.setLayout(new BorderLayout());
		mainPanel.add(open,BorderLayout.WEST);
		mainPanel.add(stop,BorderLayout.EAST);
		mainPanel.add(message,BorderLayout.CENTER);
		add(mainPanel);
	}
	/*
	 * 打开文件
	 */
	private void openFile() throws NoPlayerException, MalformedURLException, IOException{
		fileDialog = new FileDialog(this);
		fileDialog.setVisible(true);
		if (fileDialog.getFile() != null) {
			filePosition = fileDialog.getDirectory() + fileDialog.getFile();// 原因请见同目录下的FileDialogDemo.java文件
			fileName = fileDialog.getFile();
			file = new File(filePosition);
			createPlayer();

		}
	}
	
	/*
	 * 开始播放
	 */
	private void createPlayer() throws NoPlayerException, MalformedURLException, IOException{
		if(player != null)
			stopPlayer();
		try{
			player = Manager.createPlayer(file.toURL());
			player.addControllerListener(new ControllerHand());
			player.start();
			message.setText("正在播放:"+ fileName);
		}catch(Exception e){
			JOptionPane.showMessageDialog(null, "本播放器不支持您要播放的格式!", "出错了!",
					JOptionPane.ERROR_MESSAGE);
		}
		
	}
	/*
	 * 停止播放
	 */
	private void stopPlayer(){
		player.stop();
		player.close();
		mainPanel.remove(control);
		message.setText("Welcome to use the most simple music player!");
	}
	/*
	 * 控制类
	 */
	private class ControllerHand implements ControllerListener {
		public void controllerUpdate(ControllerEvent e) {
			if (e instanceof RealizeCompleteEvent) {
				Component visual = player.getVisualComponent();
				control = player.getControlPanelComponent();
				if (control != null) {
					mainPanel.add(control,BorderLayout.SOUTH);
				}
				mainPanel.doLayout();
				return;
			}

			if (e instanceof EndOfMediaEvent) {
				stopPlayer();
			}
		}
	}

	
	public static void main(String[] args) {
		new MainFrame();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -