📄 wplayer.java
字号:
wpList.musicList.currentMM();
musicPlay(wpList.musicList.list[wpList.musicList.getCurrent()].getPath());
wpList.setSelectedFile(wpList.musicList.getCurrent());
}
if(musicClip != null)
{
long l = musicClip.getMicrosecondLength() / 1000;
int i = wpList.getSelectedFile();
if(i >= 0)
{
Music selectedFile = wpList.musicList.list[i];
String path = selectedFile.getPath();
selectedFile.reset(Music.getFileName(path), l);
wpList.refreshPlayList(wpList.musicList.toStrings());
wpList.setSelectedFile(wpList.musicList.getCurrent());
}
}
}
}
else if(evt.getSource() == btSilence)
{
if(muteFlag)
muteFlag = false;
else
muteFlag = true;
if(muteControl != null)
{
muteControl.setValue(muteFlag);
}
}
else if(evt.getSource() == btOpen)
{
stop();
musicStop();
JFileChooser chooser = new JFileChooser(System.getProperty("user.dir"));
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"支持音频格式", "wav", "au", "aif", "aifc", "snd");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
stop();
timerThread = new Thread(this);
if(musicClip != null)
{
musicClip.stop();
musicClip.close();
}
String path = chooser.getSelectedFile().getAbsolutePath();
wpList.musicList.addMusic(path, Music.getFileName(path));
musicClip = Music.loadMusic(path);
if(musicClip != null)
{
long l = musicClip.getMicrosecondLength() / 1000;
wpList.musicList.current = wpList.musicList.getTotal() - 1;
Music selectedFile = wpList.musicList.list[wpList.musicList.getCurrent()];
selectedFile.reset(Music.getFileName(path), l);
wpList.refreshPlayList(wpList.musicList.toStrings());
wpList.lPlayerList.setSelectedIndex(wpList.musicList.getCurrent());
gainControl = (FloatControl)musicClip.getControl(FloatControl.Type.MASTER_GAIN);
gainControl.setValue(dB);
muteControl = (BooleanControl)musicClip.getControl(BooleanControl.Type.MUTE);
muteControl.setValue(muteFlag);
lbTimeDisp.setText("0:00");
sbProgressValue = 0;
sbProgress.setValue(sbProgressValue);
time = 1;
musicClip.start();
timerThread.start();
playingFlag = true;
btStart.setLabel("暂停");
}
else
{
JOptionPane.showMessageDialog(null, "无法打开文件", "警告", JOptionPane.INFORMATION_MESSAGE);
}
}
}
else if(evt.getSource() == btList)
{
if(playlistVisible == true)
{
playlistVisible = false;
wpList.setVisible(playlistVisible);
pack();
}
else
{
playlistVisible = true;
wpList.setVisible(playlistVisible);
pack();
}
}
else if(evt.getSource() == btLyric)
{
if(lyricVisible == true)
{
lyricVisible = false;
wpLrc.setVisible(lyricVisible);
pack();
}
else
{
lyricVisible = true;
wpLrc.setVisible(lyricVisible);
pack();
}
}
else if(evt.getSource() == miFile)
{
JFileChooser chooser = new JFileChooser(System.getProperty("user.dir"));
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"支持音频格式", "wav", "au", "aif", "aifc", "snd");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
String path = chooser.getSelectedFile().getAbsolutePath();
wpList.musicList.addMusic(path, Music.getFileName(path));
}
wpList.refreshPlayList(wpList.musicList.toStrings());
wpList.lPlayerList.setSelectedIndex(wpList.musicList.getTotal() - 1);
}
else if(evt.getSource() == miFolder)
{
JFileChooser chooser = new JFileChooser(System.getProperty("user.dir"));
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//"支持音频格式", "wav", "au", "aif", "aifc", "snd");
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
String path = chooser.getSelectedFile().getAbsolutePath();
File[] listFiles = new File(path).listFiles();
for(int i = 0; i < listFiles.length; i++)
{
int t = listFiles[i].getName().lastIndexOf(".");
String s = listFiles[i].getName().substring(t + 1);
if(s.equalsIgnoreCase("wav") ||
s.equalsIgnoreCase("au") ||
s.equalsIgnoreCase("aif") ||
s.equalsIgnoreCase("aifc") ||
s.equalsIgnoreCase("snd"))
{
wpList.musicList.addMusic(listFiles[i].getAbsolutePath(), Music.getFileName(listFiles[i].getAbsolutePath()));
}
}
}
wpList.refreshPlayList(wpList.musicList.toStrings());
wpList.lPlayerList.setSelectedIndex(wpList.musicList.getTotal() - 1);
}
else if(evt.getSource() == miByName)
{
if(wpList.musicList != null)
{
wpList.musicList.sortByName();
wpList.refreshPlayList(wpList.musicList.toStrings());
}
}
else if(evt.getSource() == miByLength)
{
if(wpList.musicList != null)
{
wpList.musicList.sortByLength();
wpList.refreshPlayList(wpList.musicList.toStrings());
}
}
else if(evt.getSource() == miRandomSort)
{
if(wpList.musicList != null)
{
wpList.musicList.sortRandom();
wpList.refreshPlayList(wpList.musicList.toStrings());
}
}
else if(evt.getSource() == miSelected)
{
int[] deleteFiles = wpList.lPlayerList.getSelectedIndices();
wpList.musicList.deleteMusic(deleteFiles);
wpList.refreshPlayList(wpList.musicList.toStrings());
}
else if(evt.getSource() == miRepeated)
{
wpList.musicList.deleteRepeatedMusic();
wpList.refreshPlayList(wpList.musicList.toStrings());
}
else if(evt.getSource() == miNonexistent)
{
wpList.musicList.deleteNonexistentMusic();
wpList.refreshPlayList(wpList.musicList.toStrings());
}
else if(evt.getSource() == miDeleteAllFiles)
{
wpList.musicList.deleteAllMusic();
wpList.refreshPlayList(wpList.musicList.toStrings());
}
else if(evt.getSource() == miCreateList)
{
int i = 1;
String listPath = null;
while(true)
{
listPath = "PlayList" + File.separator + i + ".ttpl";
File playList = new File(listPath);
if(playList.exists() == false)
break;
i++;
}
wpList.musicListsList.addMusicList(listPath);
String name = JOptionPane.showInputDialog("输入新建列表名称:");
wpList.musicListsList.list[wpList.musicListsList.getTotal() - 1].listName = name;
wpList.refreshPlayListsList(wpList.musicListsList.toStrings());
wpList.setSelectedList(wpList.musicListsList.getTotal() - 1);
wpList.refreshPlayList(wpList.musicList.toStrings());
}
else if(evt.getSource() == miAddList)
{
JFileChooser chooser = new JFileChooser(System.getProperty("user.dir"));
FileNameExtensionFilter filter = new FileNameExtensionFilter("播放列表", "ttpl");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
String path = chooser.getSelectedFile().getAbsolutePath();
wpList.musicListsList.addMusicList(path);
int i = 1;
while(true)
{
path = "PlayList" + File.separator + i + ".ttpl";
File playList = new File(path);
if(playList.exists() == false)
break;
i++;
}
wpList.musicListsList.list[wpList.musicListsList.getTotal() - 1].listPath = path;
wpList.refreshPlayListsList(wpList.musicListsList.toStrings());
wpList.setSelectedList(wpList.musicListsList.getTotal() - 1);
wpList.refreshPlayList(wpList.musicList.toStrings());
}
}
else if(evt.getSource() == miOpenList)
{
JFileChooser chooser = new JFileChooser(System.getProperty("user.dir"));
FileNameExtensionFilter filter = new FileNameExtensionFilter("播放列表", "ttpl");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
File playList = chooser.getSelectedFile();
int i;
for(i = 0; i < wpList.musicListsList.getTotal(); i++)
{
if(new File(wpList.musicListsList.list[i].listPath).equals(playList))
break;
}
if(i < wpList.musicListsList.getTotal())
{
wpList.setSelectedList(i);
}
else
{
wpList.musicListsList.addMusicList(playList.getAbsolutePath());
wpList.refreshPlayListsList(wpList.musicListsList.toStrings());
wpList.setSelectedList(wpList.musicListsList.getTotal() - 1);
}
wpList.refreshPlayList(wpList.musicList.toStrings());
}
}
else if(evt.getSource() == miSaveList)
{
JFileChooser chooser = new JFileChooser(System.getProperty("user.dir"));
FileNameExtensionFilter filter = new FileNameExtensionFilter("播放列表", "ttpl");
chooser.setFileFilter(filter);
int returnVal = chooser.showSaveDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
String path = chooser.getSelectedFile().getAbsolutePath();
if(chooser.getFileFilter().equals(filter))
path += ".ttpl";
wpList.musicList.save(path);
}
}
else if(evt.getSource() == miDeleteList)
{
int index = wpList.lPlayerListsList.getSelectedIndex();
File deleteList = new File(wpList.musicList.listPath);
deleteList.delete();
wpList.musicListsList.deleteMusicList(index);
wpList.refreshPlayListsList(wpList.musicListsList.toStrings());
}
else if(evt.getSource() == miSaveAllLists)
{
for(int i = 0; i < wpList.musicListsList.getTotal(); i++)
{
JFileChooser chooser = new JFileChooser(System.getProperty("user.dir"));
FileNameExtensionFilter filter = new FileNameExtensionFilter("播放列表", "ttpl");
chooser.setFileFilter(filter);
chooser.setSelectedFile(new File(wpList.musicListsList.list[i].listName));
int returnVal = chooser.showSaveDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
String path = chooser.getSelectedFile().getAbsolutePath();
if(chooser.getFileFilter().equals(filter))
path += ".ttpl";
wpList.musicList.save(path);
}
}
}
else if(evt.getSource() == miInformation)
{
String newLine = System.getProperty("line.separator");
String information = "WPlayer 1.0.0" + newLine;
information += "作者: Kozzy" + newLine;
information += "完成日期: 2007.12.17" + newLine;
JOptionPane.showMessageDialog(null, information, "信息", JOptionPane.INFORMATION_MESSAGE);
}
}
public static void setUIFont(javax.swing.plaf.FontUIResource f)
{
java.util.Enumeration keys = UIManager.getDefaults().keys();
while(keys.hasMoreElements())
{
Object key = keys.nextElement();
Object value = UIManager.get(key);
if(value instanceof javax.swing.plaf.FontUIResource)
{
UIManager.put(key,f);
}
}
}
static public void main(String args[])
{
Font font = new Font("宋体", Font.PLAIN, 12);
setUIFont(new javax.swing.plaf.FontUIResource(font));
WPlayer wp = new WPlayer();
}
}
class WPlayerListPanel extends JPanel implements ListSelectionListener
{
MusicListsList musicListsList = null;
MusicList musicList = null;
String[] playList = null;
String[] playListsList = null;
JList lPlayerListsList = new JList();
JList lPlayerList = new JList();
JScrollPane spPlayerListsList = new JScrollPane(lPlayerListsList);
JScrollPane spPlayerList = new JScrollPane(lPlayerList);
WPlayerListPanel(int width)
{
lPlayerListsList.addListSelectionListener(this);
lPlayerList.addListSelectionListener(this);
lPlayerListsList.setFixedCellHeight(14);
lPlayerListsList.setFixedCellWidth(Math.round(0.25f * width));
spPlayerListsList.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
spPlayerListsList.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
lPlayerList.setFixedCellHeight(14);
lPlayerList.setFixedCellWidth(Math.round(0.55f * width));
spPlayerList.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
spPlayerList.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
add("West", spPlayerListsList);
add("Center", spPlayerList);
}
public void valueChanged(ListSelectionEvent evt)
{
if(evt.getSource() == lPlayerListsList)
{
if(lPlayerListsList.getSelectedIndex() >= 0)
{
musicListsList.current = lPlayerListsList.getSelectedIndex();
musicList = musicListsList.list[musicListsList.current];
refreshPlayList(musicList.toStrings());
}
}
}
void setSelectedList(int index)
{
lPlayerListsList.setSelectedIndex(index);
}
void setSelectedFile(int index)
{
lPlayerList.setSelectedIndex(index);
}
void refreshPlayList(String[] list)
{
playList = list;
lPlayerList.setListData(playList);
if(musicList.getCurrent() >= 0)
lPlayerList.setSelectedIndex(musicList.getCurrent());
try
{
musicList.save(musicList.listPath);
}
catch(Exception e){};
}
void refreshPlayListsList(String[] listsList)
{
playListsList = listsList;
lPlayerListsList.setListData(playListsList);
}
int getSelectedList()
{
return lPlayerListsList.getSelectedIndex();
}
int getSelectedFile()
{
return lPlayerList.getSelectedIndex();
}
}
class WPlayerLyricFrame extends JFrame implements ComponentListener
{
int width = 234;
int height = 152;
RollingLyric drawText = new RollingLyric("", width, height);
WPlayerLyricFrame()
{
super("Lyric");
add("Center", drawText);
setLocation(new Point(234, 0));
setSize(234, 152);
setMinimumSize(new Dimension(234, 152));
setAlwaysOnTop(true);
setDefaultCloseOperation(HIDE_ON_CLOSE);
addComponentListener(this);
}
void setNewLyric(String name)
{
File lyricDir = new File("Lyric");
if(!lyricDir.exists())
lyricDir.mkdir();
drawText.setLyric(lyricDir + File.separator + name + ".lrc");
}
void start()
{
drawText.start();
}
void pause()
{
drawText.stop();
}
void setTime(long time)
{
drawText.setTime(time);
}
public void componentHidden(ComponentEvent evt)
{
}
public void componentMoved(ComponentEvent evt)
{
}
public void componentShown(ComponentEvent evt)
{
}
public void componentResized(ComponentEvent evt)
{
System.out.println((int)getSize().getWidth());
System.out.println((int)getSize().getHeight());
drawText.modifySize((int)getSize().getWidth(), (int)getSize().getHeight());
}
public void setDefaultCloseOperation(int operation)
{
super.setDefaultCloseOperation(operation);
}
}
class MusicListsList
{
MusicList[] list = null;
int total = 0;
static int increment = 20;
int current = -1;
MusicListsList()
{
File[] listFiles = new File("PlayList").listFiles();
if(listFiles.length > 0)
{
list = new MusicList[listFiles.length];
for(int i = 0; i < listFiles.length; i++)
{
int t = listFiles[i].getName().lastIndexOf(".");
String s = listFiles[i].getName().substring(t + 1);
if(s.equalsIgnoreCase("ttpl"))
{
addMusicList(listFiles[i].getAbsolutePath());
}
}
}
else
{
list = new MusicList[1];
addMusicList("PlayList" + File.separator + "1.ttpl");
list[0].listName = "Default";
}
}
int getTotal()
{
return total;
}
void addMusicList(String path)
{
if(total >= list.length)
{
MusicList[] temp = new MusicList[list.length + increment];
for(int i = 0; i < list.length; i++)
{
temp[i] = list[i];
}
list = temp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -