?? mp3player.java
字號:
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 + -