package org.jys.mini.ui;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import org.jys.mini.bo.ConfigBo;
import org.jys.mini.bo.DownloadBo;
import org.jys.mini.bo.MusicBo;
import org.jys.mini.bo.SongBo;
import org.jys.mini.enums.PageState;
import org.jys.mini.enums.PlayerState;
import org.jys.mini.ui.guicomps.BottomPanel;
import org.jys.mini.ui.guicomps.LrcLabelPPMenuListener;
import org.jys.mini.ui.guicomps.PlayPanel;
import org.jys.mini.ui.guicomps.RightPanel;
import org.jys.mini.ui.guicomps.SkinDialog;
import org.jys.mini.ui.guicomps.SongListListener;
import org.jys.mini.ui.guicomps.TitlePanel;
import org.jys.mini.ui.guicomps.local.LocalMusicPanel;
import org.jys.mini.ui.guicomps.net.NetMusicPanel;
import org.jys.mini.ui.myguis.MyFrame;
import org.jys.mini.util.DesktopInfo;
import org.jys.mini.util.Global;
/**
* 此类为主函数类
* @author jys1109
*/
@SuppressWarnings("serial")
public class MiniMusic extends MyFrame implements ActionListener {
private static MiniMusic mini;//MiniMusic的单例对象
private TitlePanel titlePanel = TitlePanel.getInstance();//标题栏
//中间部分
private PlayPanel playPnl = PlayPanel.getInstance();// 正在播放的Panel
private PageState lastPageState = null;// 记录当前显示的Tab页
private NetMusicPanel netPnl = NetMusicPanel.getInstance();// 网络曲库的Panel
private LocalMusicPanel localPnl = LocalMusicPanel.getInstance();// 本地曲库的Panel
private RightPanel rightPnl = RightPanel.getInstance();// 右边的Panel
//底部控制UI
private BottomPanel bottomPnl = BottomPanel.getInstance();// 底部的控制区Panel
///
private MusicBo musicBo = MusicBo.getInstance();
private MiniMusic() {
setSize(DesktopInfo.getDimension());
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle(Global.MINIMUSIC_TITLE);
setVisible(true);
//这里初始化顺序不能乱
setBorderColor(Color.black);
initTitlePanel();
pnl.add(rightPnl);
pnl.add(bottomPnl);
setPage(PageState.PLAYING);
initListener();//增加监听器
//设置主题
ConfigBo configBo = ConfigBo.getInstance();
configBo.setThemeIndex(configBo.getThemeByIndex());
setBorderColor(ConfigBo.getInstance().getSongListDisplayColor());
}
public static MiniMusic getInstance() {
return mini;
}
public void initListener() {
titlePanel.setButtonListener(this);
bottomPnl.setButtonListener(this);
}
/**
* 初始化标题栏
*/
public void initTitlePanel() {
titlePanel.setTitle(Global.MINIMUSIC_TITLE, 70, 40);
pnl.add(titlePanel);
}
/**
* 设置边框颜色
* @param color
*/
public void setBorderColor(Color color) {
pnl.setBorder(BorderFactory.createLineBorder(color, 1));
}
/**
* 设置中间页面显示部分
*/
public void setPage(PageState ps) {
if (lastPageState != null && lastPageState.equals(ps)) {
return;
}
if (lastPageState != null) {
pnl.remove(getPanelFromPage(lastPageState));
}
pnl.add(getPanelFromPage(ps));
titlePanel.setPage(ps);
lastPageState = ps;
repaint();
}
/**
* 根据不用的页面,获取相应的JPanel
* @param ps
* @return
*/
private JPanel getPanelFromPage(PageState ps) {
if (ps == PageState.PLAYING) {
netPnl.setVisible(false);
localPnl.setVisible(false);
playPnl.setVisible(true);
return playPnl;
} else if (ps == PageState.NET) {
playPnl.setVisible(false);
localPnl.setVisible(false);
netPnl.setVisible(true);
return netPnl;
} else if (ps == PageState.LOACL) {
playPnl.setVisible(false);
netPnl.setVisible(false);
localPnl.setVisible(true);
return localPnl;
}
return null;
}
@Override
public void paint(Graphics g) {
super.paint(g);
titlePanel.setBounds(2, 2, getWidth() - 4, Global.BAR_HEIGHT);
playPnl.setBounds(2, Global.BAR_HEIGHT + 3, getWidth() - 210, getHeight() - 2 * Global.BAR_HEIGHT);
netPnl.setBounds(2, Global.BAR_HEIGHT + 3, getWidth() - 210, getHeight() - 2 * Global.BAR_HEIGHT + 1);
localPnl.setBounds(2, Global.BAR_HEIGHT + 3, getWidth() - 210, getHeight() - 2 * Global.BAR_HEIGHT);
rightPnl.setBounds(getWidth() - 208, Global.BAR_HEIGHT + 3, 206, getHeight() - 2 * Global.BAR_HEIGHT);
bottomPnl.setBounds(2, getHeight() - 59, getWidth() - 4, 57);
}
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if (obj == titlePanel.getCloseButton()) {// 关闭系统
this.dispose();
ConfigBo.getInstance().saveConfig();
SongBo.getInstance().saveSongList();
DownloadBo.getInstance().saveTaskList();
System.exit(0);
} else if (obj == titlePanel.getMaxButton() && !getBounds().equals(maxWindowSize)) {// 窗口最大化
beforeMaxWindowSize = getBounds();
titlePanel.setWindowToMax();
setBounds(maxWindowSize);
repaint();
} else if (obj == titlePanel.getMaxButton() && getBounds().equals(maxWindowSize)) {// 恢复窗口
titlePanel.recoverWindow();
setBounds(beforeMaxWindowSize);
repaint();
} else if (obj == titlePanel.getMinButton()) {// 最小化
SkinDialog.getInstance().setVisible(false);
setExtendedState(ICONIFIED);
} else if (obj == titlePanel.getSkinButton()) {// 更换皮肤
Point point = titlePanel.getSkinButton().getLocationOnScreen();
point.translate(0, 20);
SkinDialog.getInstance().setLocation(point);
SkinDialog.getInstance().setVisible(true);
} else if (obj == titlePanel.getPlayingButton()) {// 转为正在播放页面
setPage(PageState.PLAYING);
} else if (obj == titlePanel.getLocalMusicButton()) {// 转到本地曲库页面
setPage(PageState.LOACL);
} else if (obj == titlePanel.getNetMusicButton()) {// 转到网络曲库页面
setPage(PageState.NET);
} else if (obj == bottomPnl.getPlaySongButton() &&
musicBo.getPlayerState().equals(PlayerState.PLAY)) {// 播放/暂停音乐
musicBo.pause();
} else if (obj == bottomPnl.getPlaySongButton() &&
musicBo.getPlayerState().equals(PlayerState.PAUSE)) {// 播放/暂停音乐
musicBo.resume();
} else if (obj == bottomPnl.getPlaySongButton() &&
musicBo.getPlayerState().equals(PlayerState.UNREALIZED)) {// 播放/暂停音乐
//.......
} else if (obj == bottomPnl.getStopSongButton()) {// 停止播放
musicBo.stop();
} else if (obj == bottomPnl.getPriorSongButton()) {// 上一首歌曲
musicBo.priorSong();
} else if (obj == bottomPnl.getNextSongButton()) {// 下一首歌曲
musicBo.nextSong();
} else if (obj == bottomPnl.getNoSoundButton() && musicBo.isNoSound()) {// 取消静音
musicBo.setNoSound(false);
} else if (obj == bottomPnl.getNoSoundButton() && !musicBo.isNoSound()) {// 设置为静音
musicBo.setNoSound(true);
}
}
public static void main(String args[]) {
Runnable doCreateAndShowGUI = new Runnable() {
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
对源码稍稍微做了些整理,以前网络曲库是搜索谷歌音乐服务器,现在谷歌服务已经停了,所以换了另外一个,由于时间关系,没怎么测试,有提问可以提给我,邮箱:jys1109@126.com,代码已经移至svn china上面,地址为:http://www.svnchina.com/svn/minimusic,可以使用svn checkout一下,有时间会继续更新和优化
资源推荐
资源详情
资源评论
收起资源包目录
Java跨平台网络音乐播放器update_20130601 (333个子文件)
.classpath 939B
.classpath 296B
.classpath 232B
Thumbs.db 61KB
Thumbs.db 7KB
.fatjar 317B
liquidlnf.jar 313KB
jl1.0.jar 103KB
tritonus_share.jar 100KB
commons-logging-api.jar 26KB
basicplayer.jar 26KB
mp3spi1.9.4.jar 24KB
json-simple-1.1.1.jar 23KB
json-simple-1.1.1.jar 23KB
mymp3playerctl.jar 20KB
netmp3.jar 15KB
kj_dsp1.1.jar 12KB
netlrc.jar 5KB
MiniMusic.java 9KB
MyMenuBar.java 9KB
MusicBo.java 8KB
LrcBo.java 8KB
BottomPanel.java 7KB
DownloadBo.java 7KB
TitlePanel.java 7KB
MP3SearcherImpl.java 7KB
LrcSearchDialog.java 6KB
SongBo.java 6KB
LocalMusicPanel.java 6KB
LrcLabel.java 6KB
SkinDialog.java 6KB
MyFrame.java 6KB
SearchLRC.java 5KB
NetMusicPanel.java 5KB
NetMusicBuffer.java 5KB
FileBo.java 5KB
LoaclTablePanel.java 5KB
ConfigBo.java 5KB
RightPanel.java 4KB
ConfigDao.java 4KB
NetMusicPlayer.java 3KB
BaseDao.java 3KB
ID3Info.java 3KB
DownloadThread.java 3KB
MyTabbedPaneUI.java 3KB
LocalMusicSearcher.java 3KB
Song.java 3KB
SongListListener.java 3KB
FormatUtils.java 3KB
SongListPPMenu.java 2KB
LocalListener.java 2KB
DownloadingTable.java 2KB
DownloadedListener.java 2KB
LocalTable.java 2KB
Result.java 2KB
DownloadedTable.java 2KB
MySliderUI.java 2KB
SongDao.java 2KB
DownloadingListener.java 2KB
DownloadingPPMenu.java 2KB
WindowsButton.java 2KB
LinkButton.java 2KB
MusicListListener.java 2KB
TaskModel.java 2KB
MusicListTable.java 2KB
DownloadedPPMenu.java 2KB
LocalPPMenu.java 2KB
MyCellRenderer.java 2KB
PlayerButton.java 2KB
DownloadDao.java 2KB
TimeSliderUpdate.java 2KB
MP3SearcherGUI.java 2KB
NetMusicSearcher.java 1KB
DaoFactory.java 1KB
DesktopInfo.java 1KB
IConfigDao.java 1KB
MyTreeCellRenderer.java 1KB
NetPlayerTimer.java 1KB
NetMusicListener.java 1KB
LrcLabelPPMenuListener.java 1KB
MP3.java 1KB
LrcDao.java 1KB
LrcLabelPPMenu.java 1KB
MP3Data.java 1KB
ContentSnip.java 1KB
MyPlayerControl.java 1KB
ISongDao.java 1KB
MP3Searcher.java 1KB
LRC.java 1KB
StringFilter.java 1KB
StringFilter.java 1018B
LrcSentence.java 1010B
DownloadedTablePanel.java 986B
PlayPanel.java 958B
MP3LinkData.java 928B
DownloadingTablePanel.java 925B
ImageTool.java 915B
SelectedLabel.java 894B
TimeSliderListener.java 889B
AboutDialog.java 886B
共 333 条
- 1
- 2
- 3
- 4
资源评论
- li5755631912014-05-16测试了,没法用
小路依稀
- 粉丝: 16
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功