亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? internetmusic.java

?? Java多線程實現(xiàn)的顯示波形的Applet高級播放器
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
import javax.swing.JApplet;
import java.util.Vector;
import java.util.StringTokenizer;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.BasicStroke;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
import java.io.IOException;
import javax.sound.sampled.LineUnavailableException;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.DefaultListSelectionModel;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.net.URL;

public class InternetMusic extends JApplet implements ActionListener,Runnable{
	Vector songVector=new Vector();
	Vector songFileVector=new Vector();
	JSplitPane jSplitPane1=new JSplitPane();
	SongTablePane songTablePane;
	Vector lines=new Vector();
	AudioInputStream audioInputStream;
	AudioFormat audioFormat;
	final int bufferSize=16384;
	WaveGraphPane waveGraphPane=new WaveGraphPane();
	PlayMusic playMusic=new PlayMusic();
	double seconds,duration;
	URL url;
	String selSong="未選擇";
	String selSongFile=null;
	JButton oneB=new JButton("單曲播放");
	JButton allB=new JButton("全部播放");
	JButton stopB=new JButton("停止");
	Thread backThread; //播放全部歌曲的后臺線程
	boolean stopStatus;
	public void init(){
		setSize(560,230);
		String songs=getParameter("songs");
		String songFiles=getParameter("songFiles");
		//
		StringTokenizer stk1=new StringTokenizer(songs,",");
		while(stk1.hasMoreTokens()){
			songVector.add(stk1.nextToken());
		}
		//
		StringTokenizer stk2=new StringTokenizer(songFiles,",");
		while(stk2.hasMoreTokens()){
			songFileVector.add(stk2.nextToken());
		}
		songTablePane=new SongTablePane(songVector);
		getContentPane().add(jSplitPane1);
		jSplitPane1.setLeftComponent(songTablePane);
		jSplitPane1.setDividerLocation(230);
		//創(chuàng)建按鈕面板
		JPanel buttonPane=new JPanel();
		buttonPane.add(oneB);
		buttonPane.add(allB);
		buttonPane.add(stopB);
		//設(shè)置右側(cè)面板為網(wǎng)格包布局
		JPanel rightPane=new JPanel();
		GridBagLayout gridbag = new GridBagLayout();
         	rightPane.setLayout(gridbag);
		GridBagConstraints c = new GridBagConstraints();
		//布置音頻曲線面板
		c.gridx=0;
		c.gridy=0;
		c.weightx=100;
		c.weighty=95;
		c.fill=GridBagConstraints.BOTH;
		gridbag.setConstraints(waveGraphPane,c);
		rightPane.add(waveGraphPane);
		//布置按鈕面板
		c.gridx=0;
		c.gridy=1;
		c.weightx=100;
		c.weighty=5;
		c.fill=GridBagConstraints.BOTH;
		gridbag.setConstraints(buttonPane,c);
		rightPane.add(buttonPane);
		//插入右側(cè)分隔面板
		jSplitPane1.setRightComponent(rightPane);
		//添加按鈕的單擊事件處理
		oneB.addActionListener(this);
		allB.addActionListener(this);
		stopB.addActionListener(this);
	}
	public void actionPerformed(ActionEvent e){
		Object srcObj=e.getSource();
		if(srcObj==oneB){
			if(selSongFile!=null){
				try{
					//url=new URL("file:///d:/applet/music/"+selSongFile);
					url=new URL("file://"+getCodeBase().getPath()+"/music/"+selSongFile);
					audioInputStream=AudioSystem.getAudioInputStream(url);
					//多少偵/貞頻率,再通過1000乘去,化為毫秒.
                			long milliseconds = (long)((audioInputStream.getFrameLength()*1000)/audioInputStream.getFormat().getFrameRate());
                			duration = milliseconds / 1000.0;
					waveGraphPane.drawWaveLine(null); //繪制音頻曲線
					playMusic.startPlay(); //播放
					waveGraphPane.startDraw(); //移動紅線條
				}catch(Exception e2){System.out.println(e2);}
			}
		}
		if(srcObj==allB){
			stopStatus=false;
			backThread=new Thread(this); //創(chuàng)建后臺進程
			backThread.start(); //啟動后臺線程播放所有歌曲
		}
		if(srcObj==stopB){
			if(backThread!=null){
				stopStatus=true;
				playMusic.playThread=null;
				waveGraphPane.graphThread=null;
				backThread=null; //停止播放全部歌曲的后臺線程
			}
			else{
				playMusic.stopPlay();
				waveGraphPane.stopDraw();
			}
		}
	}
	//后臺運行全部歌曲
	public void run(){
		for(int i=0;i<songVector.size();i++){
				if(!stopStatus){
				selSong=(String)songVector.get(i);
				String selSongFile=(String)songFileVector.get(i);
				songTablePane.jTableView.changeSelection(i,0,false,false); //設(shè)置表格當前行選中
				try{
					//url=new URL("file:///d:/applet/music/"+selSongFile);
					url=new URL("file://"+getCodeBase().getPath()+"/music/"+selSongFile);
					audioInputStream=AudioSystem.getAudioInputStream(url);
					//多少偵/貞頻率,再通過1000乘去,化為毫秒.
                			long milliseconds = (long)((audioInputStream.getFrameLength()*1000)/audioInputStream.getFormat().getFrameRate());
                			duration = milliseconds / 1000.0;
					waveGraphPane.drawWaveLine(null); //繪制音頻曲線
					playMusic.startPlay(); //播放
					waveGraphPane.startDraw(); //移動紅線條
				}catch(Exception e2){System.out.println(e2);}
				for(;;){ //無限循環(huán),直到每一歌曲播放完畢。
					if(playMusic.playThread==null) break;
				}
			}
		}
		backThread=null;  //最后停止后臺線程
	}

	//歌曲點播面板
	class SongTablePane extends JScrollPane implements ListSelectionListener{
		JTable jTableView;
		DefaultTableModel dtm;
		int selRow;
		SongTablePane(Vector songVector){
			//表格的列頭標題
			Vector columnName=new Vector();
			columnName.add("序號");
			columnName.add("歌曲");
			//為歌曲加上序號
			Vector rowData=new Vector();
			for(int i=0;i<songVector.size();i++){
				Vector temp=new Vector();//不要把此語句放在for循環(huán)前面,否則會被最后的歌曲覆蓋。
				temp.add(new Integer(i)); //序號
				temp.add(songVector.get(i)); //歌曲名
				rowData.add(temp);
			}
			//設(shè)置水平和垂直滾動條
			this.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
			this.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
			//
			dtm = new DefaultTableModel(rowData,columnName){
			//修改下面方法的返回值為false,使表格單元數(shù)據(jù)只讀。
				public boolean isCellEditable(int row, int col) {return false;}
			};
			jTableView=new JTable(dtm);
			jTableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
			//預置"序號"列的寬度
			TableColumn orderColumn = jTableView.getColumn("序號");
			orderColumn.setPreferredWidth(60);
			//預置"歌曲"列的寬度
			TableColumn songColumn=jTableView.getColumn("歌曲");
			songColumn.setPreferredWidth(210);

			//把表格插入滾動條面板
			this.getViewport().setView(jTableView);
			//
			DefaultListSelectionModel dlsm=new DefaultListSelectionModel();
			//為行選擇模式添加行選擇監(jiān)聽器
			dlsm.addListSelectionListener(this);
			jTableView.setSelectionModel(dlsm); //設(shè)置表格的行選擇模式

		}
		public void valueChanged(ListSelectionEvent e){
			//取得歌曲文件名
			selRow=jTableView.getSelectedRow();
			selSong=(String)songVector.get(selRow);
			selSongFile=(String)songFileVector.get(selRow);
		}
	}

	//播放音樂類
	class PlayMusic implements Runnable {
        	SourceDataLine sdLine; //紅線條

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区电影| 日韩精品一区二区在线| 精品在线亚洲视频| 自拍偷拍国产精品| 欧美电影免费观看高清完整版| www.亚洲精品| 久久se精品一区精品二区| 亚洲黄色小视频| 久久精品视频网| 91精品国产综合久久久久久| 日韩视频一区在线观看| 91婷婷韩国欧美一区二区| 精品一区二区在线播放| 亚洲一区二区三区四区在线观看| 国产日韩av一区| 日韩一区二区三区四区| 日本精品一级二级| eeuss鲁片一区二区三区在线看| 免费av网站大全久久| 亚洲一区二区三区美女| 国产精品美女久久久久aⅴ国产馆| 日韩精品一区二区三区老鸭窝| 欧美在线不卡一区| 99精品桃花视频在线观看| 国产麻豆精品视频| 久久99国产精品尤物| 免费人成黄页网站在线一区二区| 亚洲午夜在线观看视频在线| 亚洲视频一二三区| 日本一区二区电影| 日本一区二区三级电影在线观看| 日韩精品一区二区三区四区视频 | 一区二区三区在线观看视频| 久久久影视传媒| 欧美电影免费提供在线观看| 日韩写真欧美这视频| 欧美精品三级在线观看| 欧美高清性hdvideosex| 欧美日韩1234| 在线电影院国产精品| 911精品国产一区二区在线| 欧美午夜视频网站| 欧美日本视频在线| 欧美亚洲动漫精品| 99久久精品国产麻豆演员表| 不卡的av在线播放| 99国产精品久久久久| 91免费精品国自产拍在线不卡 | 欧美日韩不卡一区二区| 欧美精品在线观看播放| 91麻豆精品国产91久久久资源速度 | 亚洲国产精品一区二区www在线| 亚洲精品菠萝久久久久久久| 亚洲欧美另类图片小说| 99精品久久只有精品| 成人免费高清视频| 91在线国产福利| 欧美中文字幕一区二区三区亚洲| 欧美色图天堂网| 欧美精品欧美精品系列| 精品久久久久久久一区二区蜜臀| 26uuu欧美| 国产精品欧美极品| 亚洲精品写真福利| 日韩精品成人一区二区在线| 蜜臀国产一区二区三区在线播放| 看片的网站亚洲| 国产精品99久久久| 97se亚洲国产综合在线| 欧美日韩国产成人在线免费| 日韩精品综合一本久道在线视频| 国产日韩欧美精品电影三级在线 | 图片区小说区区亚洲影院| 日韩av中文字幕一区二区三区| 激情五月激情综合网| 不卡的av在线播放| 欧美一区二区三区啪啪| 中文字幕乱码亚洲精品一区| 亚洲高清不卡在线| 国产酒店精品激情| 日本电影亚洲天堂一区| 欧美va日韩va| 亚洲色图在线播放| 日韩精品视频网| 国产91对白在线观看九色| 欧美色国产精品| 国产三级三级三级精品8ⅰ区| 亚洲免费观看在线视频| 久久99精品网久久| 91一区一区三区| 日韩欧美国产1| 亚洲免费在线视频| 国产麻豆91精品| 欧美日韩高清一区二区不卡| 国产欧美一区二区精品仙草咪| 一区二区三区不卡视频在线观看| 卡一卡二国产精品| 欧美综合天天夜夜久久| 久久九九全国免费| 秋霞av亚洲一区二区三| 99久久99久久精品免费看蜜桃| 日韩欧美专区在线| 亚洲欧美电影一区二区| 国产在线视视频有精品| 欧美日韩一区二区在线观看| 欧美国产丝袜视频| 极品尤物av久久免费看| 欧美女孩性生活视频| 99久久久免费精品国产一区二区| 91精品福利在线一区二区三区| 亚洲欧美日韩一区| 国产电影精品久久禁18| 91精品国产欧美日韩| 亚洲午夜视频在线观看| av不卡在线播放| 久久先锋影音av鲁色资源网| 日本在线不卡视频| 欧美色图片你懂的| 亚洲最色的网站| 色哟哟国产精品免费观看| 国产精品情趣视频| 岛国精品在线观看| 久久久亚洲午夜电影| 精品一区二区三区在线播放| 欧美日韩国产色站一区二区三区| 一区视频在线播放| 成人美女视频在线看| 国产丝袜欧美中文另类| 国产精品亚洲а∨天堂免在线| 欧美日本精品一区二区三区| 亚洲综合一区在线| 日本道色综合久久| 亚洲美女屁股眼交3| 91美女在线视频| 亚洲日本一区二区| 91色视频在线| 一区二区三区小说| 色美美综合视频| 怡红院av一区二区三区| 在线欧美一区二区| 亚洲韩国精品一区| 欧美精品在线观看一区二区| 日韩高清在线电影| 欧美一区二区播放| 激情欧美一区二区| 久久亚洲春色中文字幕久久久| 国产成人在线免费| 国产精品传媒入口麻豆| 99久久国产综合精品女不卡| 亚洲美女一区二区三区| 色婷婷激情久久| 午夜国产不卡在线观看视频| 欧美一区二区三区免费视频| 久久国产精品第一页| 久久嫩草精品久久久久| 不卡一区二区在线| 亚洲一区二区三区自拍| 欧美福利视频导航| 777奇米四色成人影色区| 美女高潮久久久| 国产日韩欧美不卡在线| 91丨porny丨户外露出| 亚洲成在线观看| 精品久久一区二区三区| 成人免费视频国产在线观看| 亚洲乱码中文字幕| 欧美一区午夜视频在线观看| 国产精品中文欧美| 一区二区三区国产精华| 日韩欧美在线一区二区三区| 国产电影一区二区三区| 亚洲午夜久久久久久久久电影院 | 精品一区二区三区欧美| 国产精品你懂的| 欧美人伦禁忌dvd放荡欲情| 国产麻豆成人精品| 亚洲综合自拍偷拍| 久久亚洲一级片| 色欧美片视频在线观看在线视频| 日韩制服丝袜先锋影音| 久久网站最新地址| 在线观看亚洲一区| 奇米色一区二区| 中文字幕一区二区三区不卡| 欧美猛男超大videosgay| 成人久久久精品乱码一区二区三区| 亚洲电影第三页| 中文字幕欧美日韩一区| 制服.丝袜.亚洲.另类.中文| 成人黄动漫网站免费app| 免费美女久久99| 亚洲视频资源在线| 亚洲精品一区二区三区影院| 色婷婷综合久久| 国产精品亚洲第一| 日韩vs国产vs欧美| 日本电影欧美片| 国产91精品露脸国语对白| 天天亚洲美女在线视频| 亚洲欧洲精品一区二区三区|