音乐播放器基本
(附源码)
音乐播放器;附源乐,
只要源乐中所有的乐都乐制到自己定乐的乐目里就乐的~将
数据乐乐乐,
歌曲乐型表,乐型乐、乐型名号称
歌曲信息表,歌曲乐、歌曲名、歌手、作曲、文件位置、乐型乐号号播放器界面,
主界面(1)
添加歌曲界面(2)
添加歌曲乐型(3)
乐找(4)
功能描述,
播放,乐播放列表中的歌曲乐行播放~播放乐乐歌曲的信息乐示的右乐的歌曲信息面双会将1.
板中~同乐匹配歌乐~把相乐的歌乐乐示在右乐的歌乐面板中。会
停止,在歌曲列表下方有一小按乐~歌曲正在播放乐~乐示的是可停止的按乐~点乐乐个当2.
停止前播放的歌曲。当
添加歌曲乐,在播放列表中乐乐右乐~乐乐添加歌曲乐型乐乐出一添加歌曲乐型的乐~在乐乐个会框会3.
框填确号中上正的信息;歌曲乐型乐不能重乐,后提交~乐乐出“添加成功”的消息提示~
否乐乐出“添加失乐”的相乐信息。
添加歌曲, 乐中歌曲乐型后~乐乐右乐乐乐添加歌曲或者点乐左下角的添加按乐乐乐出一添加歌个4.
曲信息的乐~乐入歌曲信息;歌名不能重乐,后点乐提交乐乐行添加~添加成功乐更新会框填
了歌曲列表~否乐乐出相乐的提示~如,框。
乐除歌曲,乐中歌曲后~乐乐右乐乐乐乐除歌曲或者点乐左下角的乐除乐乐出乐乐,确框5.
~乐乐“是”乐乐除~否乐无操作。
乐除歌曲乐型,乐中要乐除的歌曲乐型~乐乐右乐乐除歌曲乐型~乐乐出乐乐~乐中“是”乐乐除~否确框6.
乐无操作。
乐,点乐左下角的乐~乐出一乐入~乐入歌名的一部分;包含歌名,乐行乐~乐找找会个框找找7.
到的歌曲乐示在乐入上方~点乐乐到的歌曲乐行播放会框找
,添加歌曲乐型乐~乐型乐和名都不能乐空~号称注
添加歌曲乐~歌曲名不能乐空~歌曲地址不能乐空;否乐播放乐是无效路,~若乐空~会径
会乐出相乐的提示信息
乐的描述,
乐号乐名功能描述
,主界面乐~播放器的入口PlayerFrame.java
,添加歌曲信息AddSongInfoDialog.java,添加歌曲乐型AddSongInfoTypeDialog.java,封了播放、停止的方法装PlayerUtil.java
,乐播放器相乐的鼠乐乐器听PlayerMouseListener.java,乐播放器主界面相乐的按乐乐器听PlayerActionListener.java!乐的乐入的文乐乐器找框档听PlayerDocumentListener.java,添加歌曲信息界面的按乐乐器听AddSongInfoActionListener.java,添加歌曲乐型界面的按乐乐器听AddSongTypeActionListener.java
封了乐接和乐放据乐装数10DBConnection.java
封了乐据乐的操作;增、乐、改、乐,装数11JDBCHelper.java
操作据乐的乐句;常量,数12SQLContants.java
自定乐的唯一乐束的常异13UniqueException.java
歌曲信息据乐乐乐象;接口,数14SongInfoDao.java
15SongInfoDaoImpl.javaSongInfoDao.java的乐乐乐具的每乐中的方法的作用乐源代乐中的注乐体个
主界面,1.PlayerFrame.java
package cn.xtu.catqq.view.player;/**
音乐播放器主界面* V1.0
*
*/
import java.awt.BorderLayout;import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;import java.awt.Insets;
import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;
import java.util.Vector;
import javax.swing.Icon;
import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JSlider;
import javax.swing.JSplitPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.SwingConstants;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.DefaultTreeModel;
import cn.xtu.catqq.control.playerlistener.PlayerActionListener;import cn.xtu.catqq.control.playerlistener.PlayerDocumentListener;
import cn.xtu.catqq.control.playerlistener.PlayerMouseListener;import cn.xtu.catqq.model.player.SongInfoDao;import cn.xtu.catqq.model.player.impl.SongInfoDaoImpl;import cn.xtu.catqq.util.FontUtil;
import cn.xtu.catqq.util.InitialFrameStyle;
import cn.xtu.catqq.util.MyTreeUI;
public class PlayerFrame extends JFrame {
/*
歌曲信息面板右乐 * songInfoPanel:()
播放乐度面板条 * playerPanel:
播放的乐度条 * sliderPanel:
歌乐面板 * songWordsPanel:
乐乐面板 * queryPanel:
*/
private JPanel leftPanel, rightPanel, songInfoPanel, sliderPanel,
songWordsPanel, queryPanel;
/*
用存放歌乐来 * songLrc:
*/
private Vector
songLrc = new Vector();/*
定乐乐片几个 *
*/
播放private Icon playIcon = new ImageIcon("img\\.png");
停止private Icon stopIcon = new ImageIcon("img\\.png");
private JSlider slider;
private JLabel songWordsLabel1, songWordsLabel2, songWordsLabel3,
songWordsLabel4, songWordsLabel5;
/*
添加歌曲按乐 乐除歌曲按乐 根据歌曲名乐乐歌 * btnAddSong:btnDelSong:querySongInfo:
曲信息按乐
*/
private JButton btnAddSong, btnDelSong, btnQuerySong, btnPlay;
private List btnList = new ArrayList();private PlayerMouseListener pmLis;
private Thread mouseThread;
/*
用建来构 * treeModel:JTree
*/
private DefaultTreeModel treeModel;
private JTree tree;
private JScrollPane scrollPanel, queryScrollPanel;/*
用乐入歌曲名的文本 来框用乐示歌曲名的文本来框 * txtQuery:txtSongName:
用乐示歌手的文本来框txtSonger:
用乐示作曲者 来乐示歌曲乐型 乐示歌曲地址 * txtMS:txtSongType:txtSongLoc:
*/
private JTextField txtQuery, txtSongName, txtSonger, txtMS, txtSongType,
txtSongLoc;
private JPopupMenu popMenu, findPopMenu;private JMenuItem miAddSong, miAddSongType, miDelSong, miDelSongType;
private Insets insets = new Insets(0, 0, 0, 0);public PlayerFrame() {
音乐播放器this.setTitle("V1.0");
InitialFrameStyle.setFrameStyle(this, 800, 600);
initialComponent();
createPopedMunu();
createFindPopMenu();
registerListener();
this.validate();
}
初始化面板乐件//
private void initialComponent() {
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);splitPane.setDividerLocation(200);
splitPane.setDividerSize(2);
leftPanel = new JPanel(null);
JPanel northPanel = new JPanel(null);
播放器左上JLabel lab = new JLabel(new ImageIcon("img\\.png"));
InitialFrameStyle.putComponentByNull(northPanel, lab, 0, 0, 200, 100);InitialFrameStyle.putComponentByNull(leftPanel, northPanel, 0, 0, 200,
100);
乐乐面板//
queryScrollPanel = new JScrollPane();
queryScrollPanel.setVisible(false);
queryPanel = new JPanel();
queryScrollPanel.setViewportView(queryPanel);
InitialFrameStyle.putComponentByNull(leftPanel, queryScrollPanel, 0,
405, 200, 100);
初始化左乐的滑乐面板//
scrollPanel = new JScrollPane();
initialScrollPane();
InitialFrameStyle.putComponentByNull(leftPanel, scrollPanel, 0, 100,
200, 410);
滑乐面板条//
sliderPanel = new JPanel(null);
sliderPanel.setBackground(new Color(1, 141, 255));
btnPlay = new JButton(playIcon);
btnPlay.setActionCommand("stop");
btnPlay.setMargin(insets);
InitialFrameStyle.putComponentByNull(sliderPanel, btnPlay, 3, 5, 15, 15);slider = new JSlider(0, 100, 0);
slider.setBackground(new Color(1, 141, 255));
InitialFrameStyle.putComponentByNull(sliderPanel, slider, 20, 5, 180, 15);InitialFrameStyle.putComponentByNull(leftPanel, sliderPanel, 0, 506, 200, 20);左乐下面的面板//
JPanel southPanel = new JPanel(null);
southPanel.setBackground(new Color(1, 141, 255));
southPanel.setBounds(0, 527, 200, 45);initLeftSouthPanel(southPanel);
leftPanel.add(southPanel);
splitPane.setLeftComponent(leftPanel);rightPanel = new JPanel(null);
音乐信息JLabel label = new JLabel("");
label.setFont(FontUtil.setFont(60));label.setForeground(Color.ORANGE);InitialFrameStyle.putComponentByNull(rightPanel, label, 150, 50, 300,
50);
initialRightPanel();
音乐播放器背景JLabel backGround = new JLabel(new ImageIcon("img\\.jpg"));backGround.setBounds(0, 0, 600, 600);rightPanel.add(backGround);
splitPane.setRightComponent(rightPanel);this.add(splitPane);
}
初始化右乐的面板//
private void initialRightPanel() {歌曲信息面板//
songInfoPanel = new JPanel();
songInfoPanel.setBorder(new TitledBorder(new LineBorder(Color.ORANGE),
歌曲信息""));
initialSongInfoPanel();
歌乐面板//
initialSongWordsPanel();
InitialFrameStyle.putComponentByNull(rightPanel, songInfoPanel, 30,
120, 520, 160);
InitialFrameStyle.putComponentByNull(rightPanel, songWordsPanel, 30,
300, 520, 220);
}
初始化歌曲信息面板//
private void initialSongInfoPanel() {songInfoPanel.setLayout(null);
songInfoPanel.setBackground(Color.WHITE);
歌曲名JLabel lblSongName = new JLabel(":");
歌 手JLabel lblSonger = new JLabel(":");
作 曲JLabel lblMS = new JLabel(":");
乐 型JLabel lblSongType = new JLabel(":");
位 置JLabel lblSongLoc = new JLabel(":");
Font font = FontUtil.setFont(14);
lblSongName.setFont(font);
lblSonger.setFont(font);
lblMS.setFont(font);
lblSongType.setFont(font);
lblSongLoc.setFont(font);
txtSongName = new JTextField(15);
txtSongName.setBorder(new LineBorder(null, 0));txtSongName.setBackground(new Color(255,255,255));txtSongName.setEditable(false);
txtSonger = new JTextField(15);
txtSonger.setBorder(new LineBorder(null, 0));txtSonger.setBackground(new Color(255,255,255));txtSonger.setEditable(false);
txtMS = new JTextField(15);
txtMS.setBorder(new LineBorder(null, 0));txtMS.setBackground(new Color(255,255,255));txtMS.setEditable(false);
txtSongType = new JTextField(15);
txtSongType.setBorder(new LineBorder(null, 0));txtSongType.setBackground(new Color(255,255,255));txtSongType.setEditable(false);
txtSongLoc = new JTextField(15);
txtSongLoc.setBorder(new LineBorder(null, 0));txtSongLoc.setBackground(new Color(255,255,255));txtSongLoc.setEditable(false);
InitialFrameStyle.putComponentByNull(songInfoPanel, lblSongName, 80,
40, 50, 25);
InitialFrameStyle.putComponentByNull(songInfoPanel, lblSonger, 300, 40,
50, 25);
InitialFrameStyle.putComponentByNull(songInfoPanel, lblMS, 80, 70, 50,
25);
InitialFrameStyle.putComponentByNull(songInfoPanel, lblSongType, 300,
70, 50, 25);
InitialFrameStyle.putComponentByNull(songInfoPanel, lblSongLoc, 80,
100, 50, 25);
InitialFrameStyle.putComponentByNull(songInfoPanel, txtSongName, 135,
40, 150, 25);
InitialFrameStyle.putComponentByNull(songInfoPanel, txtSonger, 355, 40,
150, 25);
InitialFrameStyle.putComponentByNull(songInfoPanel, txtMS, 135, 70,
150, 25);
InitialFrameStyle.putComponentByNull(songInfoPanel, txtSongType, 355,
70, 150, 25);
InitialFrameStyle.putComponentByNull(songInfoPanel, txtSongLoc, 135,
100, 370, 25);
}
初始化歌乐面板//
private void initialSongWordsPanel() {
songWordsPanel = new JPanel(new GridLayout(5, 1));
songWordsPanel.setBorder(new TitledBorder(new LineBorder(Color.ORANGE,
歌乐1), ""));
songWordsLabel1 = new JLabel();
songWordsLabel1.setHorizontalAlignment(SwingConstants.CENTER);songWordsLabel1.setFont(FontUtil.setFont(14));
songWordsLabel1.setForeground(new Color(38, 99, 224));songWordsLabel2 = new JLabel();
songWordsLabel2.setHorizontalAlignment(SwingConstants.CENTER);songWordsLabel2.setFont(FontUtil.setFont(18));
songWordsLabel2.setForeground(new Color(38, 99, 224));songWordsLabel3 = new JLabel();
songWordsLabel3.setHorizontalAlignment(SwingConstants.CENTER);songWordsLabel3.setFont(FontUtil.setFont(22));
songWordsLabel3.setForeground(Color.MAGENTA);
songWordsLabel4 = new JLabel();
songWordsLabel4.setHorizontalAlignment(SwingConstants.CENTER);songWordsLabel4.setFont(FontUtil.setFont(18));
songWordsLabel4.setForeground(new Color(38, 99, 224));songWordsLabel5 = new JLabel();
songWordsLabel5.setHorizontalAlignment(SwingConstants.CENTER);songWordsLabel5.setFont(FontUtil.setFont(14));
songWordsLabel5.setForeground(new Color(38, 99, 224));
songWordsPanel.add(songWordsLabel1);
songWordsPanel.add(songWordsLabel2);
songWordsPanel.add(songWordsLabel3);
songWordsPanel.add(songWordsLabel4);
songWordsPanel.add(songWordsLabel5);
}
初始化左乐乐乐面板存放// JTree
private void initialScrollPane() {
所有音乐DefaultMutableTreeNode root = new DefaultMutableTreeNode("");
treeModel = new DefaultTreeModel(root);
SongInfoDao infoDao = new SongInfoDaoImpl();List