Java swing仿酷狗音乐播放器
今天给大家介绍下用Java swing开发一款音乐播放器,高仿酷狗音乐播放器,完整源码地址在最下方,本文只列出部分源码,因为源码很多,全部贴不下,下面还是老规矩。来看看运行结果:
下面我们来看看代码:
首先看一下主窗口的实现代码:
package com.baiting;
import java.awt.Dimension;
import java.awt.Toolkit;
import com.baiting.menu.CloseWindow;
/**
* 窗口
* @author lmq
*
*/
public abstract class MusicWindow extends Music {
protected MusicFrame musicFrame;
private String title;
private int locationX;
private int locationY;
public MusicWindow() {
title = getConfigMap().get("title").toString();
defaultLocation();
}
public MusicWindow(String title,int width,int height) {
this.title = title;
setWidth(width);
setHeight(height);
defaultLocation();
}
public MusicWindow(String title,int width,int height,int locationX,int locationY) {
this.title = title;
setWidth(width);
setHeight(height);
this.locationX = locationX;
this.locationY = locationY;
}
private void defaultLocation() {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
locationX = (screenSize.width-getWidth())/2;
locationY = (screenSize.height-getHeight())/2;
}
protected MusicFrame createWindow() {
musicFrame = new MusicFrame();
musicFrame.setTitle(title);
musicFrame.setSize(getWidth(), getHeight());
//musicFrame.setLocation(locationX, locationY);
musicFrame.setLocationRelativeTo(null);
musicFrame.addWindowListener(new CloseWindow());
musicFrame.setMinimumSize(new Dimension(600, 450));
musicFrame.setVisible(true);
return musicFrame;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getLocationX() {
return locationX;
}
public void setLocationX(int locationX) {
this.locationX = locationX;
}
public int getLocationY() {
return locationY;
}
public void setLocationY(int locationY) {
this.locationY = locationY;
}
}
看看在线下载歌曲的代码:
package com.baiting.service;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.baiting.bean.DownFailSong;
import com.baiting.bean.DownedSong;
import com.baiting.http.DownloadSong;
import com.baiting.util.StringUtil;
public class DownloadSongService extends MusicService {
private static DownloadSongService instance;
private static Thread downloadThread;
private DownloadSongService() {
}
public static DownloadSongService getInstance() {
if(null == instance) {
instance = new DownloadSongService();
}
return instance;
}
public void startDownload() {
if(null == downloadThread) {
downloadThread = new Thread(new DownloadSong());
downloadThread.start();
} else {
if(!downloadThread.isAlive()) {
downloadThread.interrupt();
downloadThread = null;
downloadThread = new Thread(new DownloadSong());
downloadThread.start();
}
}
}
public List<DownedSong> getDownedSongAll() {
File downedListFile = new File(getBasePath()+DOWNLOAD_PATH+"downed.list");
if(!downedListFile.exists()) {
try {
log.info("downed.list文件不存在,正在创建....");
downedListFile.createNewFile();
log.info("downed.list文件创建[成功]....");
} catch (IOException e) {
log.info("downed.list文件创建[失败--异常]....");
e.printStackTrace();
downedListFile = null;
return null;
}
}
try {
BufferedReader reader = new BufferedReader(new FileReader(downedListFile));
String line = reader.readLine();
List<DownedSong> list = new ArrayList<DownedSong>();
int count = 0;
if(!StringUtil.isEmpty(line)) {
while(line != null) {
count++;
String content = line.replace("\n", "").trim();
String[] cols = content.split(SEPARATOR);
if(cols.length>5) {
DownedSong downedSong = new DownedSong();
downedSong.setNo(count);
downedSong.setFileName(cols[0].trim());
downedSong.setSongName(cols[1].trim());
downedSong.setSinger(cols[2].trim());
downedSong.setFileSize(Double.parseDouble(cols[3].trim()));
downedSong.setPath(cols[4].trim());
downedSong.setCreateTime(cols[5].trim());
list.add(downedSong);
downedSong = null;
}
line = reader.readLine();
}
}
reader.close();
reader = null;
if(list.size()>0) {
return list;
}
return null;
} catch (FileNotFoundException e) {
log.info("文件不存在...");
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
downedListFile = null;
}
}
/**
* 扫描目录---未完成
* @return
*/
public List<DownedSong> getDownedSongByDir() {
String downedSongDir = getDownloadSongPath();
File downedDir = new File(downedSongDir);
if(downedDir.exists() && downedDir.isDirectory()) {
String[] fileList = downedDir.list();
for (int i = 0; i < fileList.length; i++) {
}
}
return null;
}
/**
* 判断歌曲是否存在(通过歌曲名和歌手)
* @param songName
* @param singer
* @return
*/
public boolean existSongByInfo(String songName,String singer) {
List<DownedSong> list = getDownedSongAll();
if(null == list || list.size()<1) {
return false;
}
boolean flag = false;
for(DownedSong downedSong : list) {
if(downedSong.getSongName().equals(songName) && downedSong.getSinger().equals(singer)) {
flag = true;
break;
}
}
list = null;
return flag;
}
/**
* 已下载列表中加入新数据
* @param downedSong
* @return
*/
public int addDownedSong(DownedSong downedSong) {
File downedListFile = new File(getBasePath()+DOWNLOAD_PATH+"downed.list");
if(!downedListFile.exists()) {
try {
log.info("downed.list文件不存在,正在创建....");
downedListFile.createNewFile();
log.info("downed.list文件创建[成功]....");
} catch (IOException e) {
log.info("downed.list文件创建[失败--异常]....");
e.printStackTrace();
downedListFile = null;
return -1;
}
}
if(null != downedSong) {
String contents = downedSong.getFileName()+SEPARATOR+
downedSong.getSongName()+SEPARATOR+downedSong.getSinger()+SEPARATOR+
downedSong.getFileSize()+SEPARATOR+downedSong.getPath()+SEPARATOR+
downedSong.getCreateTime()+"\n";
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(downedListFile,true));
writer.write(contents);
writer.flush();
writer.close();
writer = null;
List<DownedSong> lists = getDownedSongAll();
int count = lists.size();
lists = null;
return count;
} catch (IOException e) {
log.info(downedListFile.getName()+"文件信息写入[失败---异常]");
e.printStackTrace();
return -1;
} finally {
downedListFile = null;
downedSong = null;
}
}
return -1;
}
/**
* 获取所有下载失败的歌曲
* @return
*/
public List<DownFailSong> getDownFailSongAll() {
File downedListFile = new File(getBasePath()+DOWNLOAD_PATH+"downFail.list");
if(!downedListFile.exists()) {
try {
log.info("downFail.list文件不存在,正在创建....");
downedListFile.createNewFile();
log.info("downFail.list文件创建[成功]....");
} catch (IOException e) {
log.info("downFail.list文件创建[失败--异常]....");
e.printStackTrace();
downedListFile = null;
return null;
}
}
try {
BufferedReader reader = new BufferedReader(new FileReader(downedListFile));
String line = reader.readLine();
List<DownFailSong> list = new ArrayList<DownFailSong>();
int count = 0;
if(!StringUtil.isEmpty(line)) {
while(line != null) {
count++;
String content = line.replace("\n", "").trim();
String[] cols = content.split(SEPARATOR);
if(cols.length>3) {
DownFailSong failSong = new DownFailSong();
failSong.setNo(count);
failSong.setSongName(cols[0].trim());
failSong.setSinger(cols[1].trim());
failSong.setFormat(cols[2].trim());
failSong.setFailTime(cols[3].trim());
list.add(failSong);
}
line = reader.readLine();
}
}
reader.close();
reader = null;
if(list.size()>0) {
return list;
}
return null;
} catch (FileNotFoundException e) {
log.info("文件不存在...");
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
downedListFile = null;
}
}
/**
* 已下载列表中加入新数据
* @param downedSong
* @return
*/
public int addDownFailSong(DownFailSong downFailSong) {
File downFailListFile = new File(getBasePath()+DOWNLOAD_PATH+"downFail.list");
if(!downFailListFile.exists()) {
try {
log.info("downFail.list文件不存在,正在创建....");
downFailListFile.createNewFile();
log.info("downFail.list文件创建[成功]....");
} catch (IOException e) {
log.info("downFail.list文件创建[失败--异常]....");
e.printStackTrace();
downFailSong = null;
return -1;
}
}
if(null != downFailSong) {
String contents = downFailSong.getSongName()+SEPARATOR+downFailSong.getSinger()+SEPARATOR+
downFailSong.getFormat()+SEPARATOR+downFailSong.getFailTime()+"\n";
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(downFailListFile,true));
writer.write(contents);
writer.flush();
writer.close();
List<DownFailSong> lists = getDownFailSongAll();
return lists.size();
} catch (IOException e) {
log.info(downFailListFile.getName()+"文件信息写入[失败---异常]");
e.printStackTrace();
return -1;
} catch (Exception e) {
e.printStackTrace();
return -1;
} finally {
downFailSong = null;
contents = null;
}
}
return -1;
}
/**
* 删除下载失败的歌曲列表
* @param no
* @return
*/
public boolean delDownFailSong(int no) {
List<DownFailSong> lists = getDownFailSongAll();
if(null != lists && lists.size()>0 && lists.size()>=no && no>0) {
DownFailSong downFailSong = lists.get(no-1);
log.info("删除下载失败的歌曲《"+downFailSong.getSongName()+"》");
lists.remove(downFailSong);
StringBuffer strBuff = new StringBuffer();
if(null != lists && lists.size()>0) {
for(DownFailSong fs : lists) {
String contents = fs.getSongName()+SEPARATOR+fs.getSinger()+SEPARATOR+
fs.getFormat()+SEPARATOR+fs.getFailTime()+"\n";
strBuff.append(contents);
}
} else {
strBuff.append("");
}
File downFailListFile = new File(getBasePath()+DOWNLOAD_PATH+"downFail.list");
if(!downFailListFile.exists()) {
try {
log.info("downFail.list文件不存在,正在创建....");
downFailListFile.createNewFile();
log.info("downFail.list文件创建[成功]....");
} catch (IOException e) {
log.info("downFail.list文件创建[失败--异常]....");
e.printStackTrace();
return false;
} finally {
lists = null;
}
}
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(downFailListFile,false));
writer.write(strBuff.toString());
writer.flush();
writer.close();
log.info("删除下载失败的歌曲《"+downFailSong.getSongName()+"》--成功---");
return true;
} catch (IOException e) {
log.info(downFailListFile.getName()+"文件信息写入[失败---异常]");
e.printStackTrace();
return false;
} finally {
lists = null;
downFailListFile = null;
downFailSong = null;
}
}
return false;
}
}
代码就贴这么多。
以上是 Java swing仿酷狗音乐播放器 的全部内容, 来源链接: utcz.com/p/212801.html