⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wplayer.java

📁 支持播放列表一系列操作 支持歌词秀 音频支持格式wav snd midi
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
					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 + -