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

📄 mainplayer.java

📁 mp3的播放
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**************************************************************************
 *	(C) Copyright 2008 by  Tao Liuyuan and Zhang Shuitao.                       *
 *		All Rights Reserved.               								  *
 *     																      *
 *	Project					: KYPlayer     								  *
 *	File					: KYPlayer.java 							  *	
 *	JDK version used        : jdk1.6.0_u4							      *
 * 	Version                 : 1.00				     					  *
 * 	Created				    : 2008.7.6 by  we						  *
 *************************************************************************/
package MP3Player;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.URL;

import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.GainControl;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 * 播放器主界面类,该类处理播放器主面板的各种逻辑功能.
 * @author  we
 */
class MainPlayer extends JFrame implements ControllerListener {

	/**
	 * 自动生成的序列化值
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * 移动窗口时的鼠标起始位置
	 */
	Point mouseOriginPoint = new Point();

	/**
	 * JMF播放器接口
	 */
	private Player player;

	/**
	 * 准备播放的媒体文件
	 */
	private File mediaFile;

	/**
	 * 用户配置记录
	 */
	private ConfigRecord configRecord;

	/**
	 * 背景图片面板
	 */
	private ImagePanel mainPanel;

	/**
	 * 选择媒体文件按钮
	 */
	private CustomizeButton selectButton;

	/**
	 * 播放上一首按钮
	 */
	private CustomizeButton preButton;

	/**
	 * 播放下一首按钮
	 */
	private CustomizeButton nextButton;

	/**
	 * 播放按钮--播放时隐藏
	 */
	private CustomizeButton playButton;

	/**
	 * 暂停按钮--暂停时隐藏
	 */
	private CustomizeButton pauseButton;

	/**
	 * 停止按钮
	 */
	private CustomizeButton stopButton;

	/**
	 * 最小化按钮
	 */
	private CustomizeButton minimumButton;

	/**
	 * 模式按钮--控制界面在完整和迷你模式之间切换
	 */
	private CustomizeButton modeButton;

	/**
	 * 关闭按钮
	 */
	private CustomizeButton closeButton;

	/**
	 * 歌词窗口双态按钮--显示或隐藏歌词窗口
	 */
	private CustomizeToggleButton lyricButton;

	/**
	 * 视频窗口双态按钮--显示或隐藏视频窗口
	 */
	private CustomizeToggleButton videoButton;

	/**
	 * 播放列表双态按钮--显示或隐藏播放列表窗口
	 */
	private CustomizeToggleButton playListButton;

	/**
	 * 静音双态按钮
	 */
	private CustomizeToggleButton disableSoundButton;

	/**
	 * 是否静音
	 */
	private boolean soundDisabled = false;

	/**
	 * 播放列表窗口
	 */
	private PlayListFrame playListFrame;

	/**
	 * 播放器状态标签--播放 暂停 停止
	 */
	private JLabel playerStateLabel;

	/**
	 * 声音状态标签--显示静音或者音量
	 */
	private JLabel soundStateLabel;

	/**
	 * 播放时间控制条
	 */
	private TimeControl timeControl;

	/**
	 * 音量控制条
	 */
	private SoundControl soundControl;

	/**
	 * JMF音量控制器
	 */
	private GainControl gainControl;

	/**
	 * 音量
	 */
	private float gainLevel = 0;
	
	/**
	 * 媒体信息面板
	 */
	private MediaInfoLabel mediaInfoLabel;

	/**
	 * 播放时间标签
	 */
	private JLabel timeLabel;

	/**
	 * 主窗口构造函数,取消了标题栏,载入初始状态并加载控件.
	 */
	public MainPlayer() {
		super("KYPlayer");
		setUndecorated(true);
		setLayout(null);
		loadConfig();

		//给按钮加载图像
		selectButton = new CustomizeButton("transparentButton", "selectButton");
		preButton = new CustomizeButton("transparentButton", "preButton");
		nextButton = new CustomizeButton("transparentButton", "nextButton");
		stopButton = new CustomizeButton("transparentButton", "stopButton");
		pauseButton = new CustomizeButton("pauseButton", "pauseButtonAlt");
		playButton = new CustomizeButton("playButton", "playButtonAlt");
		modeButton = new CustomizeButton("littleButton", "littleButtonAlt");
		disableSoundButton = new CustomizeToggleButton("soundButton");
		closeButton = new CustomizeButton("littleButton", "littleButtonAlt");
		minimumButton = new CustomizeButton("littleButton", "littleButtonAlt");
		playListButton = new CustomizeToggleButton("PFButton");
		

		//为按钮添加注释下标
		preButton.setToolTipText("上一首");
		nextButton.setToolTipText("下一首");
		stopButton.setToolTipText("停止");
		selectButton.setToolTipText("播放文件");
		playButton.setToolTipText("播放");
		pauseButton.setToolTipText("暂停");		
		modeButton.setToolTipText("迷你模式");
		disableSoundButton.setToolTipText("声音开关");
		closeButton.setToolTipText("退出(Alt+X)");
		minimumButton.setToolTipText("最小化");
		playListButton.setToolTipText("播放列表");
		
		
		//为按钮注册事件
		preButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				playPre();
			}
		});
		nextButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				playNext();
			}
		});
		stopButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				stop();
			}
		});
		selectButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				selectFileToPlay();
			}
		});
		disableSoundButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				soundDisabled = disableSoundButton.isSelected();
				setSoundLabel("");
				setGain();
			}
		});
		playButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				play();
			}
		});
		pauseButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				pause();
			}
		});
		minimumButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				minimum();
			}
		});
		modeButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				changeDisplayModel();
			}
		});
		closeButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				close();
			}
		});		
		playListButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				showPlayListFrame(!playListFrame.isVisible());
			}
		});
		
		//设定按钮位置
		preButton.setBounds(40, 91, 8, 7);		
		nextButton.setBounds(65, 91, 8, 7);
		stopButton.setBounds(99, 91, 6, 6);
		selectButton.setBounds(192, 91, 7, 6);
		playButton.setBounds(161, 91, 7, 7);
		pauseButton.setBounds(129, 90, 7, 7);
		minimumButton.setBounds(245, 0, 8, 5);
		modeButton.setBounds(255, 0, 8, 5);		
		closeButton.setBounds(265, 0, 8, 5);
		playListButton.setBounds(225, 57, 22, 7);
		disableSoundButton.setBounds(120, 41, 11, 11);
		
		//加载按钮到主面板中
		add(preButton);
		add(nextButton);
		add(stopButton);
		add(selectButton);
		add(playButton);
		add(pauseButton);
		add(minimumButton);
		add(modeButton);
		add(closeButton);
		add(playListButton);
		add(disableSoundButton);

		disableSoundButton.setSelected(soundDisabled);
		playListButton.setSelected(configRecord.isShowPlayListFrame());

		//声音状态标签
		soundStateLabel = new JLabel("立体声");
		soundStateLabel.setFont(new Font("宋体", Font.PLAIN, 13));
		soundStateLabel.setForeground(Color.cyan);
		soundStateLabel.setBounds(150, 39, 75, 15);
		setSoundLabel("");
		add(soundStateLabel);

		//播放状态标签
		playerStateLabel = new JLabel("状态:停止");
		playerStateLabel.setFont(new Font("宋体", Font.PLAIN, 13));
		playerStateLabel.setForeground(Color.cyan);
		playerStateLabel.setBounds(27, 37, 75, 15);
		add(playerStateLabel);

		timeControl = new TimeControl(this);
		timeControl.setBounds(9, 71, 240, 5);
		add(timeControl);

		soundControl = new SoundControl(this);
		soundControl.setBounds(109, 59, 109, 5);
		soundControl.setProcessPercent(gainLevel);
		add(soundControl);

		mediaInfoLabel = new MediaInfoLabel();
		mediaInfoLabel.setBounds(110, 24, 154, 13);
		add(mediaInfoLabel);

		timeLabel = new JLabel("00:00");
		timeLabel.setFont(new Font("Small Fonts", Font.PLAIN, 14));
		timeLabel.setForeground(Color.white);
		timeLabel.setBounds(30, 56, 46, 15);
		add(timeLabel);

		mainPanel = new ImagePanel("TTMain");
		mainPanel.setBounds(0, 0, 275, 116);
		add(mainPanel);

		//快捷键
		addKeyListener(new KeyListener() {
			@Override
			public void keyPressed(KeyEvent e) {
				if (e.isAltDown() && e.getKeyCode() == KeyEvent.VK_X) {
					close();
				}
			}

			@Override
			public void keyReleased(KeyEvent arg0) {
			}

			@Override
			public void keyTyped(KeyEvent arg0) {
			}
		});

		//移动窗口相关操作
		addMouseListener(new MouseListener() {
			@Override
			public void mouseExited(MouseEvent arg0) {
			}

			@Override
			public void mousePressed(MouseEvent e) {
				// 当鼠标按下的时候获得鼠标当前的位置
				mouseOriginPoint.x = e.getX();
				mouseOriginPoint.y = e.getY();
			}

			@Override
			public void mouseReleased(MouseEvent arg0) {
			}

			@Override
			public void mouseClicked(MouseEvent e) {
			}

			@Override
			public void mouseEntered(MouseEvent arg0) {
			}
		});

		addMouseMotionListener(new MouseMotionListener() {
			@Override
			public void mouseDragged(MouseEvent e) {
				//左键拖拽窗口重新定位
				if (e.getModifiers() == MouseEvent.BUTTON1_MASK) {
					setLocation((int) (getX() + e.getX() - mouseOriginPoint
							.getX()),
							(int) (getY() + e.getY() - mouseOriginPoint.getY()));
					playListFrame.setLocation(getX(), getY() + getHeight());
				}

⌨️ 快捷键说明

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