package minimusic.syj.myComponents;
import minimusic.syj.dao.MusicListDao;
import minimusic.syj.dao.SongDao;
import minimusic.syj.dao.impl.MusicListDaoImpl;
import minimusic.syj.dao.impl.SongDaoImpl;
import minimusic.syj.model.MusicList;
import minimusic.syj.model.Song;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import com.ibm.media.codec.audio.dvi.DVI;
import minimusic.syj.myCustomUIs.MyCellRenderer;
/**
* 此类为中间部分右边容器
*
* @author tao
*/
public class RightPanel extends JPanel {
/**
* 播放信息
*/
private PlayerInfoLabel playInfoLab = PlayerInfoLabel.getInstance();
/**
* 右键歌曲列表的菜单
*/
private MyPopupMenu popupMenu = MyPopupMenu.getInstance();
/**
* 右击播放列表的菜单
*/
private MyMusicPopupMenu musicPopupMenu=MyMusicPopupMenu.getInstance();
private static RightPanel rpnl = new RightPanel();
private SongDao songDao = new SongDaoImpl();
private MusicListDao musicListDao = new MusicListDaoImpl();
/**
* 选中的歌曲(上次播放的歌曲)
*/
private String selectSong = "";
/**
* 选中的列表(上次播放的列表)
*/
private String selectMusicList = "";
private Properties pp = new Properties();
/**
* 当前需要显示的播放列表中的歌曲数据
*/
private Vector<Song> currentSongInfo=new Vector<Song>();
/**
* 当前需要显示的播放列表中的歌曲显示数据
*/
public Vector<String> data_Song=new Vector<String>();
/**
* 播放歌曲列表
*/
private JList currentSongList=currentSongList = new JList(data_Song);
/**
* 存放列表信息数据
*/
public Vector<MusicList> musicListMenu = new Vector<MusicList>();
/**
* 列表信息显示数据
*/
private Vector <String> data_Menu=new Vector<String>();
/**
* 存放列表JList
*/
public JList lstMenu =new JList(data_Menu);
/**
* 存放每个列表id 与对应的Vector数据 Song
*/
private Map<Integer, Vector<Song>> musicListData = new HashMap<Integer, Vector<Song>>();
/**
* 存放当前选中列表的对象
*/
public MusicList currentMusicOption=null;
/**
* 播放列表的JScrollPane
*/
private JScrollPane jspMenu =new JScrollPane(lstMenu);
/**
* 歌曲列表的JScrollPane
*/
private JScrollPane jspSongs=new JScrollPane(currentSongList);
/**
* 构造方法
*/
private RightPanel() {
setLayout(null);
add(playInfoLab);
this.add(jspMenu);
this.add(jspSongs);
initPlayerList();
}
/**
* 设置显示的歌曲列表数据
*/
public void setSongList(){
data_Song.clear();
for(Song s:currentSongInfo){
data_Song.add(s.getSongName());
}
currentSongList.setListData(data_Song);
}
/**
* 设置播放列表的显示数据;
*/
public void setMusicList(){
data_Menu.clear();
for(MusicList ml:musicListMenu){
data_Menu.add(ml.getName());
}
lstMenu.setListData(data_Menu);
}
/**
* 初始化播放列表
*/
private void initPlayerList() {
//读取上次的播放信息
File properfile = new File("./src/resource/tempSave.properties");
if (!properfile.exists()) {
System.out.println(this.getClass().getName() + "临时存储文件丢失...");
return;
}
try {
pp.load(new FileInputStream(properfile));// 读取属性文件
selectSong = pp.getProperty("selectSong");
selectMusicList = pp.getProperty("selectMusicList");
} catch (FileNotFoundException e) {
System.out.println(this.getClass().getName() + "read FileNotFound");
} catch (IOException e) {
System.out.println("IOException");
}
List<Song> allSongList = songDao.getAll();
List<MusicList> allMusicList = musicListDao.selectAll();
//获取数据并放入相应的位置
for (int i = 0; i < allMusicList.size(); i++) {
Vector<Song> songVector = new Vector<Song>();
for (int j = 0; j < allSongList.size(); j++) {
Song song = allSongList.get(j);
if (song.getMusicList().getId() == allMusicList.get(i).getId()) {
File tempFile = new File(song.getSongPath());
if (tempFile.exists()) {
songVector.add(song);
}
}
}
musicListMenu.add(allMusicList.get(i));
musicListData.put(allMusicList.get(i).getId(), songVector);
}
int countM=0;
//播放列表数据初始化
for(MusicList ml:musicListMenu){
data_Menu.add(ml.getName());
//设置选中的列表
if(selectMusicList.equals(ml.getId()+"")){
lstMenu.setSelectedIndex(countM);
currentMusicOption=ml;
}
countM++;
}
lstMenu.updateUI();
jspMenu.setBorder(new TitledBorder(new EtchedBorder(), "播放列表", TitledBorder.LEFT, TitledBorder.TOP, new Font("楷体", 0, 12), new Color(51, 105, 186)));
jspMenu.setSize(185,168);
jspMenu.setLocation(10,100);
//歌曲列表数据初始化
int selInd = lstMenu.getSelectedIndex();
if(selInd>=0){
currentSongInfo = musicListData.get(selInd+1);
int countS=0;
for(Song s:currentSongInfo){
data_Song.add(s.getSongName());
//设置选中的歌曲
if(selectMusicList.equals(s.getMusicList().getId()+"")&& selectSong.equals(s.getId()+"")){
currentSongList.setSelectedIndex(countS);
}
}
}
currentSongList.updateUI();
jspSongs.setBorder(new TitledBorder(new EtchedBorder(), "歌曲列表", TitledBorder.LEFT, TitledBorder.TOP, new Font("楷体", 0, 12), new Color(51, 105, 186)));
jspSongs.setSize(185,263);
jspSongs.setLocation(10,278);
}
/**
* 保存退出前的列表id和歌曲id
*/
public void savePlayList() {
selectMusicList =musicListMenu.get( lstMenu.getSelectedIndex()).getId()+"";
int thisIndex=currentSongList.getSelectedIndex();
if(thisIndex!=-1){
selectSong=currentSongInfo.get(thisIndex).getId()+"";
}
pp.setProperty("selectMusicList", selectMusicList);
pp.setProperty("selectSong", selectSong);
try {
pp.store(new FileOutputStream("./src/resource/tempSave.properties"), "tempSave Info"); // 保存属性到普通文件
} catch (FileNotFoundException e) {
System.out.println(this.getClass().getName() + "write FileNotFound");
} catch (IOException e) {
System.out.println("IOException");
}
}
public Integer savePlayListToDatabase(MusicList musicList) {
return musicListDao.insertMusicList(musicList);
}
public void saveSongInfoToDatabase(Song song) {
songDao.insert(song);
}
public void deleteSongFromDatabase(Integer id ){
songDao.delete(id);
}
public boolean deleteSongByMusicListIdFromDatabase(Integer id ){
return songDao.deleteByMusicListId(id);
}
public static RightPanel getInstance() {
return rpnl;
}
/**
* 歌曲右击得到弹出菜单
*
* @return
*/
public MyPopupMenu getPopupMenu() {
return popupMenu;
}
/**
* 列表右击得到的菜单
* @return
*/
public MyMusicPopupMenu getMusicPopupMenu() {
return musicPopupMenu;
}
/**
* 返回选中的的歌曲列表
*
* @return
*/
public JList getCurrentSongList() {
return currentSongList;
}
public void setCurrentSongList(JList currentSongList) {
this.currentSongList = currentSongList;
}
public void setCurrentSongInfo(Vector<Song> currentSongInfo) {
this.currentSongInfo = currentSongInfo;
}
/**
* 返回当选的歌曲Vector
*
* @return
*/
public Vector<Song> getCurrentSongInfo() {
return currentSongInfo;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
没有合适的资源?快使用搜索试试~ 我知道了~
毕业设计基于JMF 的媒体播放器
共555个文件
jpg:254个
properties:83个
class:81个
4星 · 超过85%的资源 需积分: 10 8 下载量 82 浏览量
2013-07-10
09:47:12
上传
评论 1
收藏 6.54MB RAR 举报
温馨提示
可以播放MP3,wav等格式的音乐,可以创建多个歌曲列表,列表管理,歌曲管理,歌词显示,时间条,基本音乐控制等功能
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计基于JMF 的媒体播放器 (555个子文件)
RightPanel.class 11KB
MiniMusic.class 9KB
MusicPlayer.class 8KB
MyMenuBar.class 6KB
SkinDialog.class 6KB
LRCLabel.class 6KB
BottomPanel.class 5KB
MyFrame.class 5KB
SongMenuListListener.class 5KB
MiniMusicRegister.class 5KB
Song.class 5KB
SongListListener.class 5KB
LRCParse.class 5KB
TitlePanel.class 4KB
MySkin.class 4KB
MiniMusicLogin.class 4KB
BaseDAO.class 3KB
MyTabbedPaneUI.class 3KB
SongDaoImpl.class 3KB
Config.class 3KB
MusicListDaoImpl.class 3KB
TrayMenuListener.class 3KB
PlayerInfoLabel.class 3KB
MiniMusicRegister$2.class 3KB
MenuListener.class 3KB
UserDAOImpl.class 3KB
MyCellRenderer.class 3KB
SliderUpdate.class 3KB
MySliderUI.class 3KB
FormatUtils.class 3KB
LRCProperties.class 2KB
TimeSliderListener.class 2KB
MyPopupMenu.class 2KB
ChangeColorButton.class 2KB
MiniMusicLogin$1$1.class 2KB
PlayerButtonListener.class 2KB
MyMusicPopupMenu.class 2KB
MiniMusic$2.class 2KB
MiniMusicLogin$1.class 2KB
Test.class 2KB
MiniSystemTray.class 2KB
DBlist.class 2KB
SoundSliderListener.class 2KB
DesktopInfo.class 2KB
LRCLabelListener.class 2KB
PlayerButton.class 2KB
LRCSentence.class 2KB
PlayPanel.class 2KB
SongControlListener.class 2KB
TrayPopupMenu.class 1KB
IconTool.class 1KB
User.class 1KB
Test$1.class 1KB
PlayerButton$1.class 1KB
WindowsButton.class 1KB
SelectLabel.class 1KB
PlayerState.class 1KB
SliderUpdateThread.class 1KB
MiniMusicLogin$2.class 1KB
MyTabbedPaneUI$TabbedPaneLayout.class 1007B
ChangeColorButton$1.class 984B
MusicList.class 974B
ListenerManager.class 961B
WAVFileFilter.class 902B
MP3FileFilter.class 902B
WindowsButton$MyMouseAdapter.class 867B
MysqlDBUtil.class 865B
ImageLabel.class 842B
MiniMusicLogin$3.class 804B
MiniMusic$1.class 792B
FileUtils.class 770B
MyButtonUI.class 769B
MiniMusicRegister$1.class 766B
MulistListService.class 676B
SongService.class 630B
Dtest.class 622B
ComVariable.class 591B
MusicListDao.class 423B
SongDao.class 366B
UserDAO.class 257B
News.class 249B
.classpath 767B
21.gif 235KB
21.gif 235KB
jmf.jar 1.99MB
ojdbc5.jar 1.79MB
mysql-connector-java-3.1.12-bin.jar 436KB
liquidlnf.jar 313KB
mp3plugin.jar 80KB
customizer.jar 70KB
multiplayer.jar 62KB
mediaplayer.jar 38KB
RightPanel.java 10KB
MusicPlayer.java 9KB
MiniMusic.java 9KB
MyMenuBar.java 8KB
MiniMusicRegister.java 6KB
MyFrame.java 6KB
BottomPanel.java 6KB
LRCLabel.java 6KB
共 555 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
- Ayosu2019-05-05试下ok不ok
tao891125
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功