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

📄 mp3player.java

📁 java编的mp3播放器
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package mp3x;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.List;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.util.HashMap;
import java.util.Random;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import javazoom.jlgui.basicplayer.BasicPlayerEvent;
import mp3x.ctl.PlayerControl;
import mp3x.ctl.Mp3TVShow;
import mp3x.drag.WindowDragControl;
import mp3x.tool.CutAndMerge;
import mp3x.tool.ScrollThread;
import mp3x.vo.MP3FileFilter;
import mp3x.vo.Mp3Enum;
import mp3x.vo.SongVO;



public class Mp3Player extends JFrame {


	private JPanel contentPanel = null;
	private JSlider volumnSlider = null;
	private JCheckBox muteCheckBox = null;
	private JPanel headPanel = null;
	private JLabel nameLabel = null;
	private JLabel playLabel = null;
	private JLabel totalTimeLabel = null;
	private JPanel visualPanel = null;
	private JSlider processSlider = null;
	private JButton playlistButton = null;
	private JButton stopButton = null;
	private JButton playButton = null;
	private JButton previousButton = null;
	private JButton nextButton = null;
	private JButton cutButton = null;
	private JButton mergeButton = null;
	private JFrame playListFrame = null;  //  @jve:decl-index=0:visual-constraint="11,176"
	private JPanel jContentPane = null;
	private List playList = null;
	private JButton addButton = null;
	private JButton removeButton = null;
	private JFrame cutFrame = null;  //  @jve:decl-index=0:visual-constraint="11,396"
	private JPanel jContentPane1 = null;
	private JFrame mergeFrame = null;  //  @jve:decl-index=0:visual-constraint="11,580"
	private JPanel jContentPane2 = null;
	private HashMap songMap = new HashMap();
	private Mp3TVShow  mp3TVShow = new Mp3TVShow();
	private PlayerCTL playerCTL = new PlayerCTL();  //  @jve:decl-index=0:
	private boolean progressSliderDrag = false;
	
	private int plstate = Mp3Enum.PLSTATE_HIDE;
	private int playBtnState = Mp3Enum.INIT;
	private int cutFrameState = Mp3Enum.CUTFRAME_HIDE;
	private int mergeFrameState = Mp3Enum.MERGEFRAME_HIDE;
	
	private JSlider startSlider = null;
	private JSlider endSlider = null;
	private JLabel jLabel = null;
	private JLabel jLabel1 = null;
	private JTextField cutFilePath = null;
	private JButton cutPathButton = null;
	private JButton cutExecButton = null;
	private JButton addMergeButton = null;
	private JButton removeMergeButton = null;
	private List mergeList = null;
	private JTextField mergedFilePath = null;
	private JButton mergePathButton = null;
	private JButton mergeExecButton = null;
	private JDialog warningDialog = null;  //  @jve:decl-index=0:visual-constraint="330,685"
	private JPanel jContentPane3 = null;
	private JLabel jLabel2 = null;
	private JButton sureButton = null;
	
	private ScrollThread scrollThread = null;
	
	private WindowDragControl windowDragControl = new WindowDragControl(this);
	private JCheckBox circleCheckBox = null;
	private JCheckBox shuffleCheckBox = null;

	/**
	 * This method initializes 
	 * 
	 */
	public Mp3Player() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 */
	private void initialize() {
        this.setSize(new Dimension(305, 164));
        this.setTitle("mymp3player");
        this.setContentPane(getContentPanel());
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setResizable(false);
        this.setLocation(200, 100);
        playerCTL.setTVShow(mp3TVShow);
       
	}
	
	
	

	/**
	 * This method initializes contentPanel	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getContentPanel() {
		if (contentPanel == null) {
			totalTimeLabel = new JLabel();
			totalTimeLabel.setText("00:00");
			totalTimeLabel.setBounds(new Rectangle(248, 2, 38, 17));
			playLabel = new JLabel();
			playLabel.setText("00:00");
			playLabel.setBounds(new Rectangle(185, 1, 41, 16));
			nameLabel = new JLabel();
			nameLabel.setText("");
			nameLabel.setBounds(new Rectangle(2, 2, 153, 16));
			contentPanel = new JPanel();
			contentPanel.setLayout(null);
			contentPanel.add(getVolumnSlider(), null);
			contentPanel.add(getMuteCheckBox(), null);
			contentPanel.add(getHeadPanel(), null);
			contentPanel.add(getVisualPanel(), null);
			contentPanel.add(getProcessSlider(), null);
			contentPanel.add(getPlaylistButton(), null);
			contentPanel.add(getStopButton(), null);
			contentPanel.add(getPlayButton(), null);
			contentPanel.add(getPreviousButton(), null);
			contentPanel.add(getNextButton(), null);
			contentPanel.add(getCutButton(), null);
			contentPanel.add(getMergeButton(), null);
			contentPanel.add(getCircleCheckBox(), null);
			contentPanel.add(getShuffleCheckBox(), null);
			
		}
		return contentPanel;
	}







	/**
	 * This method initializes volumnSlider	
	 * 	
	 * @return javax.swing.JSlider	
	 */
	private JSlider getVolumnSlider() {
		if (volumnSlider == null) {
			volumnSlider = new JSlider();
			volumnSlider.setBounds(new Rectangle(157, 28, 88, 16));
			volumnSlider.addChangeListener(new ChangeListener(){

				public void stateChanged(ChangeEvent e) {
					// TODO Auto-generated method stub
					setVolumn();
				}
				
			});
		}
		return volumnSlider;
	}
	
	private void setVolumn(){
		if(getVolumnSlider().isEnabled()){			
			double gain = getVolumnSlider().getValue()*1.0/getVolumnSlider().getMaximum();
			playerCTL.setVolumnGain(gain);
		}else{
			playerCTL.setVolumnGain(0);
		}

	}

	/**
	 * This method initializes muteCheckBox	
	 * 	
	 * @return javax.swing.JCheckBox	
	 */
	private JCheckBox getMuteCheckBox() {
		if (muteCheckBox == null) {
			muteCheckBox = new JCheckBox();
			muteCheckBox.setBounds(new Rectangle(244, 27, 53, 21));
			muteCheckBox.setText("静音");
			muteCheckBox.addChangeListener(new ChangeListener(){

				public void stateChanged(ChangeEvent e) {
					// TODO Auto-generated method stub
					if(muteCheckBox.isSelected()){
						getVolumnSlider().setEnabled(false);
					}else{						
						getVolumnSlider().setEnabled(true);
					}
					setVolumn();
				}
				
			});
		}
		return muteCheckBox;
	}

	/**
	 * This method initializes headPanel	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getHeadPanel() {
		if (headPanel == null) {
			headPanel = new JPanel();
			headPanel.setLayout(null);
			headPanel.setBounds(new Rectangle(2, 2, 293, 20));
			headPanel.add(nameLabel, null);
			headPanel.add(playLabel, null);
			headPanel.add(totalTimeLabel, null);
			headPanel.setBorder(BorderFactory.createEtchedBorder());
		}
		return headPanel;
	}

	/**
	 * This method initializes visualPanel	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getVisualPanel() {
		if (visualPanel == null) {
			visualPanel = new JPanel();
			visualPanel.setLayout(new BorderLayout());
			visualPanel.setBounds(new Rectangle(3, 24, 154, 54));
			visualPanel.setBorder(BorderFactory.createEtchedBorder());
			visualPanel.add(mp3TVShow,BorderLayout.CENTER);
		}
		return visualPanel;
	}

	/**
	 * This method initializes processSlider	
	 * 	
	 * @return javax.swing.JSlider	
	 */
	private JSlider getProcessSlider() {
		if (processSlider == null) {
			processSlider = new JSlider();
			processSlider.setBounds(new Rectangle(5, 82, 243, 19));
			processSlider.setValue(0);
			processSlider.addChangeListener(new ChangeListener(){

				public void stateChanged(ChangeEvent e) {
					// TODO Auto-generated method stub
					
					if(!processSlider.getValueIsAdjusting()){
						if(progressSliderDrag){			
							progressSliderDrag = false;
							double rate = processSlider.getValue()*1.0/processSlider.getMaximum();
							playerCTL.seek(rate);
							setVolumn();
						}
					}else{
						progressSliderDrag = true;
					}
				}
				
			});
		}
		return processSlider;
	}

	/**
	 * This method initializes playlistButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getPlaylistButton() {
		if (playlistButton == null) {
			playlistButton = new JButton();
			playlistButton.setBounds(new Rectangle(195, 104, 48, 19));
			playlistButton.setText("pl");
			playlistButton.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					showPlayListFramLocation();	
				}

			});
		}
		return playlistButton;
	}
	
	private void showPlayListFramLocation(){
		if(plstate == Mp3Enum.PLSTATE_HIDE){	
			getPlayListFrame().setLocation(this.getX(), this.getY()+this.getHeight());
			getPlayListFrame().setVisible(true);
			plstate = Mp3Enum.PLSTATE_SHOW;
		}else{
			getPlayListFrame().setVisible(false);
			plstate = Mp3Enum.PLSTATE_HIDE;

		}
	}
	

	
	private void addFileToList(){
		SongVO[] songs = loadFilesByJF();
		if(songs != null){			
			for(int i = 0;i < songs.length;i ++){
				if(!songMap.containsKey(songs[i].getName())){
					songMap.put(songs[i].getName(), songs[i]);
					getPlayList().add(songs[i].getName());
				}
			}
		}

	}
	
	private void removeFileFromList(){
		String[] selected = getPlayList().getSelectedItems();
		for(int i = 0;i < selected.length;i ++){
			getPlayList().remove(selected[i]);
			songMap.remove(selected[i]);
		}
	}

	
	private SongVO[] loadFilesByJF(){
		JFileChooser chooser = new JFileChooser();
		chooser.setMultiSelectionEnabled(true);
		chooser.setFileFilter(new MP3FileFilter());
		int returnVal = chooser.showOpenDialog(this);
		if(returnVal == JFileChooser.APPROVE_OPTION) {
			File[] selectedFiles = chooser.getSelectedFiles();
			SongVO[] songNames = new SongVO[selectedFiles.length];
			for(int i = 0;i < songNames.length;i ++){
				songNames[i] = new SongVO(selectedFiles[i].getName(),selectedFiles[i].getAbsolutePath());
			}
			return songNames;
		}else{
			return null;
		}

	}

	

	/**
	 * This method initializes stopButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getStopButton() {
		if (stopButton == null) {
			stopButton = new JButton();
			stopButton.setBounds(new Rectangle(0, 104, 52, 19));
			stopButton.setText("s");
			stopButton.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					playerCTL.stop();
					playBtnState = Mp3Enum.STOP;
					getPlayButton().setText(">");
				}
				
			});
		}
		return stopButton;
	}

	/**
	 * This method initializes playButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getPlayButton() {
		if (playButton == null) {
			playButton = new JButton();
			playButton.setBounds(new Rectangle(101, 104, 44, 19));
			playButton.setText(">");
			playButton.addActionListener(new ActionListener(){
				
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub					
					dealPlayBtn();
				}

			});
		}
		return playButton;
	}
	
	private void dealPlayBtn(){
		if(playBtnState == Mp3Enum.INIT || playBtnState == Mp3Enum.STOP){
			getPlayButton().setText("||");
			playBtnState = Mp3Enum.PLAY;
			playSelectedSong();
		}else if(playBtnState == Mp3Enum.PLAY || playBtnState == Mp3Enum.RESUME){
			getPlayButton().setText(">");
			playBtnState = Mp3Enum.PAUSE;

⌨️ 快捷键说明

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