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

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

?? mediaplayer.java

?? Java實(shí)現(xiàn)的媒體播放器
?? JAVA
字號(hào):
//程序所用到的各種程序包
import java.awt.BorderLayout;
import java.awt.CheckboxMenuItem;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.FileDialog;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.media.ControllerClosedEvent;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.GainControl;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;
import javax.swing.JFrame;

//本程序?qū)?yīng)的類;
class MediaPlayer
	extends JFrame
	implements ActionListener, ControllerListener, ItemListener {

	//MediaPlayer類的變量成員的聲明;
	//JMF提供的播放器對(duì)象;
	Player player;
	Component vc, cc, gcc;
	GainControl gc;
	//first值用來(lái)控制在剛開(kāi)始程序時(shí)顯示一幅歡迎界面;loop用以標(biāo)記是否循環(huán)播放;
	boolean first = true, loop = false;
	//設(shè)立一個(gè)字符串記錄當(dāng)前打開(kāi)文件的路徑
	String currentDirectory;

	MediaPlayer(String title) {
		super(title);

		// 利用一個(gè)adapter實(shí)現(xiàn)對(duì)用戶點(diǎn)擊窗口系統(tǒng)菜單的關(guān)閉按鈕 
		// 時(shí)的響應(yīng); 
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				//調(diào)用dispose以執(zhí)行windowClosed
				dispose();
			}
			public void windowClosed(WindowEvent e) {
				if (player != null)
					player.close();
				System.exit(0);
			}
		});

		//調(diào)用設(shè)置程序菜單欄的方法成員完成菜單的布置
		setupMenu();

		setSize(400, 400);
		setVisible(true);

	}

	//本方法用以設(shè)置程序菜單欄
	public void setupMenu() {

		//設(shè)置一個(gè)菜單
		Menu f = new Menu("文件");

		//往設(shè)置的菜單種添加菜單項(xiàng)
		MenuItem mi = new MenuItem("打開(kāi)");
		mi.addActionListener(this);
		f.add(mi);
		f.addSeparator();

		CheckboxMenuItem cbmi = new CheckboxMenuItem("循環(huán)", false);
		cbmi.addItemListener(this);
		f.add(cbmi);
		f.addSeparator();

		mi = new MenuItem("退出");
		mi.addActionListener(this);
		f.add(mi);

		Menu l = new Menu("播放列表");

		Menu c = new Menu("播放控制");

		MenuItem move = new MenuItem("播放");
		move.addActionListener(this);
		c.add(move);
		c.addSeparator();

		MenuItem pause = new MenuItem("暫停");
		pause.addActionListener(this);
		c.add(pause);
		c.addSeparator();

		MenuItem stop = new MenuItem("停止");
		stop.addActionListener(this);
		c.add(stop);
		c.addSeparator();

		//設(shè)置一個(gè)菜單欄
		MenuBar mb = new MenuBar();

		//將設(shè)置的菜單依次加入程序的菜單欄中去
		mb.add(f);
		mb.add(c);
		mb.add(l);

		//將構(gòu)造完成的菜單欄交給當(dāng)前程序的窗口;
		setMenuBar(mb);
	}

	//事件響應(yīng)成員;捕捉發(fā)送到本對(duì)象的各種事件;
	public void actionPerformed(ActionEvent e) {

		//設(shè)一個(gè)字符串用于暫存打開(kāi)的媒體文件的路徑;
		String cufile , selcectfile;

		if (e.getActionCommand().equals("退出")) {
			// 調(diào)用dispose以便執(zhí)行windowClosed 
			dispose();
			return;
		}

		//次事件表明用戶選擇了"播放"菜單命令;
		//如果當(dāng)前有一個(gè)文件可以播放則執(zhí)行播放命令;
		if (e.getActionCommand().equals("播放")) {
			if (player != null) {
				player.start();
			}
			return;
		}

		//如果當(dāng)前正在播放某一文件,則執(zhí)行暫停;
		if (e.getActionCommand().equals("暫停")) {

			if (player != null) {
				player.stop();
			}
			return;
		}

		//次事件表明用戶選擇了"播放"菜單命令;
		//如果當(dāng)前有一個(gè)文件可以播放則執(zhí)行播放命令;
		if (e.getActionCommand().equals("停止")) {
			if (player != null) {
				player.stop();
				player.setMediaTime(new Time(0));
			}
			return;
		}

		//用戶選擇要播放的媒體文件
		if (e.getActionCommand().equals("打開(kāi)")) {

			FileDialog fd = new FileDialog(this, "打開(kāi)媒體文件", FileDialog.LOAD);
			fd.setDirectory(currentDirectory);
			fd.show();

			// 如果用戶放棄選擇文件,則返回 
			if (fd.getFile() == null)
				return;

			//保存了所選文件的名稱及其全路徑名稱已被稍后使用
			//同時(shí)設(shè)置當(dāng)前文件夾路徑
			selcectfile = fd.getFile();
			currentDirectory = fd.getDirectory();
			cufile = currentDirectory + selcectfile;

			//將用戶選擇的文件作為一個(gè)菜單項(xiàng)加入播放列表該菜單項(xiàng)"名為"該文件名;
			//被點(diǎn)擊后給出的命令串是該文件的全路徑名
			MenuItem mi = new MenuItem(selcectfile);
			mi.setActionCommand(cufile);
			MenuBar mb = getMenuBar();
			Menu m = mb.getMenu(2);
			mi.addActionListener(this);
			m.add(mi);

		} else {
			//程序邏輯運(yùn)行到此表示用戶選擇了一個(gè)"播放列表"中的媒體文件
			//此時(shí)可以通過(guò)如下動(dòng)作獲得該文件的全路徑名;
			cufile = e.getActionCommand();
			selcectfile = cufile;
		}

		//如果已存在一個(gè)播放器,則先將其關(guān)閉,稍后重新創(chuàng)建
		//創(chuàng)建播放器時(shí)需要捕捉一些異常;
		if (player != null)
			player.close();
		try {
			player = Manager.createPlayer(new MediaLocator("file:" + cufile));

		} catch (java.io.IOException e2) {
			System.out.println(e2);
			return;
		} catch (NoPlayerException e2) {
			System.out.println("不能找到播放器.");
			return;
		}
		if (player == null) {
			System.out.println("無(wú)法創(chuàng)建播放器.");
			return;
		}

		first = false;
		setTitle(selcectfile);
		//設(shè)置處理播放控制器實(shí)際的對(duì)象;
		player.addControllerListener(this);
		player.prefetch();
	}

	//因?yàn)閷?shí)現(xiàn)了"ControllerListener"接口,本方法用于處理媒體播放器傳來(lái)的事件;
	public void controllerUpdate(ControllerEvent e) {

		Container tainer = getContentPane();

		// 調(diào)用player.close()時(shí)ControllerClosedEvent事件出現(xiàn)。 
		// 如果存在視覺(jué)部件,則該部件應(yīng)該拆除(為一致起見(jiàn), 
		// 我們對(duì)控制面板部件也執(zhí)行同樣的操作下一次需要時(shí)再構(gòu)造)
		if (e instanceof ControllerClosedEvent) {
			if (vc != null) {
				remove(vc);
				vc = null;
			}
			if (cc != null) {
				remove(cc);
				cc = null;
			}
			return;
		}

		//在播放結(jié)束時(shí),將播放指針置為文件之首,如果設(shè)定了循環(huán)播放,則再次啟動(dòng)播放器;
		if (e instanceof EndOfMediaEvent) {
			player.setMediaTime(new Time(0));
			if (loop) {
				player.start();
			}
			return;
		}

		//PrefetchCompleteEvent事件發(fā)生后調(diào)用start,正式啟動(dòng)播放
		if (e instanceof PrefetchCompleteEvent) {
			player.start();
			return;
		}

		//本事件表示由于用于播放的資源已經(jīng)確定;此時(shí)要將媒體的圖形conmopnent
		//(如果有)顯示出來(lái),同時(shí)將播放器player的控制器顯示到窗口里;
		if (e instanceof RealizeCompleteEvent) {
			//如果媒體中有圖像,將對(duì)應(yīng)圖像component載入窗體;
			vc = player.getVisualComponent();
			if (vc != null)
				tainer.add(vc, BorderLayout.CENTER);

			//將對(duì)應(yīng)控制器component載入窗體;
			cc = player.getControlPanelComponent();
			cc.setBackground(Color.BLUE);
			if (cc != null)
				tainer.add(cc, BorderLayout.SOUTH);

			//有一些特殊媒體在播放時(shí)提供另外的控制手段,將該控制器一并加入窗口;
			gc = player.getGainControl();
			gcc = gc.getControlComponent();
			if (gcc != null)
				tainer.add(gcc, BorderLayout.NORTH);

			//根據(jù)媒體文件中是否有圖像,設(shè)定相應(yīng)的窗口大小	
			if (vc != null) {
				pack();
				return;
			} else {

				setSize(300, 75);
				setVisible(true);
				return;
			}

		}

	}

	//菜單狀態(tài)改變事件的響應(yīng)函數(shù);
	public void itemStateChanged(ItemEvent e) {
		loop = !loop;
	}

	//不執(zhí)行背景清除操作,以免控制面板部件閃爍 
	//同時(shí)使得本程序在用鼠標(biāo)拖動(dòng)窗口時(shí)存在一些沒(méi)有及時(shí)重繪的情況,有待改進(jìn)
	public void update(Graphics g) {
		paint(g);
	}

	//本類的main函數(shù),其中構(gòu)造了本類的一個(gè)實(shí)例;
	public static void main(String[] args) {
		new MediaPlayer("簡(jiǎn)單媒體播放器");
	}

	public void paint(Graphics g) {
		// 調(diào)用超類Frame的paint()方法,該paint()方法將調(diào)用Frame包含的各個(gè)容器 
		// 和部件(包括控制面板部件)的paint()方法。 
		super.paint(g);

		//以下代碼實(shí)現(xiàn)了在開(kāi)啟程序之初顯示歡迎界面	
		if (first) {
			int w = getSize().width;
			int h = getSize().height;
			g.setColor(Color.magenta);
			g.fillRect(0, 0, w, h);
			Font f = new Font("DialogInput", Font.BOLD, 18);
			g.setFont(f);
			FontMetrics fm = g.getFontMetrics();
			int swidth = fm.stringWidth(" 簡(jiǎn)單媒體播放器 ");
			g.setColor(Color.white);
			g.drawString(
				" 簡(jiǎn)單媒體播放器 ",
				(w - swidth) / 2,
				(h + getInsets().top) / 2);
		}
	}

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产尿小便嘘嘘尿| 青青草精品视频| 日韩一区二区在线免费观看| 国产一区二区在线观看免费| 亚洲在线视频网站| 日本一区二区高清| 欧美成人性福生活免费看| 色婷婷国产精品久久包臀| 久久不见久久见免费视频7| 一区二区三区美女视频| 国产婷婷精品av在线| 91精品蜜臀在线一区尤物| 99国产精品久久久久| 国产一区二区三区久久悠悠色av | 亚洲日本乱码在线观看| 欧美r级在线观看| 欧美视频三区在线播放| 99麻豆久久久国产精品免费优播| 久久精品99国产精品| 亚洲福利视频一区| 综合久久给合久久狠狠狠97色| 精品久久久久99| 在线不卡a资源高清| 91捆绑美女网站| av网站免费线看精品| 国产福利电影一区二区三区| 久久国产婷婷国产香蕉| 视频一区二区三区中文字幕| 亚洲国产精品久久人人爱蜜臀 | 在线视频中文字幕一区二区| www.久久精品| 国产91精品免费| 国产99久久精品| 国产成人综合在线播放| 捆绑变态av一区二区三区| 日韩成人一级片| 日韩精品欧美精品| 日一区二区三区| 天天爽夜夜爽夜夜爽精品视频| 亚洲综合在线第一页| 一区二区三区精品视频| 一区二区三区日韩| 亚洲电影视频在线| 午夜久久久影院| 日韩精品乱码av一区二区| 亚洲成人一区在线| 天天影视网天天综合色在线播放| 午夜精品久久一牛影视| 午夜精品一区在线观看| 日韩精彩视频在线观看| 蜜臀av性久久久久蜜臀av麻豆| 欧美aaaaa成人免费观看视频| 日韩成人精品在线观看| 久久精品国产一区二区三 | 国产精品18久久久| 国产91精品一区二区麻豆亚洲| 国产成人综合在线播放| 97aⅴ精品视频一二三区| 91看片淫黄大片一级在线观看| 在线免费观看成人短视频| 欧美日免费三级在线| 欧美一区二区大片| 久久青草国产手机看片福利盒子 | 麻豆国产91在线播放| 国产一区二区免费在线| 不卡在线视频中文字幕| 欧美天天综合网| 欧美xxxxx裸体时装秀| 国产欧美日韩不卡| 亚洲在线视频网站| 精品一区二区三区免费观看| 成人毛片在线观看| 欧美日韩一区精品| 久久久精品国产免费观看同学| 中文字幕一区二区三区色视频| 亚洲一卡二卡三卡四卡| 久久se这里有精品| 91在线一区二区| 日韩一区二区视频在线观看| 国产欧美综合在线观看第十页| 一区二区三区久久久| 精品一区二区三区日韩| 色婷婷久久一区二区三区麻豆| 91精品国产免费久久综合| 国产精品欧美一区喷水| 日韩精品亚洲专区| 成人高清视频免费观看| 欧美一区二区性放荡片| 国产精品第13页| 久久机这里只有精品| 97精品国产97久久久久久久久久久久 | 久久精品一区二区| 亚洲第一主播视频| 成人黄色一级视频| 欧美一区二区三区成人| 日韩一区日韩二区| 国产中文字幕精品| 欧美日韩午夜影院| 国产精品欧美一区二区三区| 蜜臀av性久久久久蜜臀aⅴ | 亚洲一二三四久久| 成人午夜av在线| 日韩一区二区不卡| 亚洲一区影音先锋| www.成人网.com| 精品国产欧美一区二区| 亚洲国产成人高清精品| 成人av集中营| 国产亚洲污的网站| 久久成人综合网| 欧美猛男gaygay网站| 日韩毛片一二三区| 粉嫩欧美一区二区三区高清影视 | 成人综合婷婷国产精品久久蜜臀| 欧美福利视频一区| 一区二区欧美国产| 91一区一区三区| 国产精品久久久久婷婷二区次| 久久99国产精品久久99果冻传媒| 欧美日韩二区三区| 亚洲自拍偷拍欧美| 91美女片黄在线观看| 国产精品国产三级国产aⅴ中文| 韩国毛片一区二区三区| 日韩免费视频一区二区| 丝袜诱惑制服诱惑色一区在线观看 | 欧美三级在线播放| 亚洲制服丝袜av| 日本韩国欧美国产| 亚洲日本在线天堂| 91丨九色丨蝌蚪富婆spa| 中文字幕日韩一区二区| www.激情成人| 亚洲欧美另类在线| 色综合天天综合| 亚洲激情欧美激情| 91年精品国产| 一区二区高清在线| 欧美性xxxxxxxx| 午夜视频在线观看一区二区| 欧美日本免费一区二区三区| 亚洲电影视频在线| 欧美一区二区在线看| 老色鬼精品视频在线观看播放| 日韩欧美久久久| 国产精品自在欧美一区| 国产欧美日韩精品一区| 91在线你懂得| 一区二区三区精品在线| 91麻豆精品91久久久久久清纯| 日韩成人免费电影| 久久老女人爱爱| 成人一区在线观看| 一区二区三区中文字幕电影| 欧美日韩国产系列| 麻豆精品在线观看| 国产欧美视频一区二区| 91视频91自| 偷拍自拍另类欧美| 精品国免费一区二区三区| 国产99一区视频免费| 亚洲三级理论片| 欧美一区二区三区免费在线看| 国产一区啦啦啦在线观看| 成人欧美一区二区三区黑人麻豆 | 91色乱码一区二区三区| 亚洲国产精品嫩草影院| 日韩一级大片在线| 国产1区2区3区精品美女| 一色桃子久久精品亚洲| 欧美人伦禁忌dvd放荡欲情| 精彩视频一区二区| 日韩一区欧美小说| 日韩一区二区三区在线观看| 国产成人鲁色资源国产91色综| 亚洲青青青在线视频| 91精品国产麻豆国产自产在线| 国产**成人网毛片九色| 亚洲444eee在线观看| 国产亚洲污的网站| 欧美日韩免费视频| 国产成人免费视频网站| 亚洲网友自拍偷拍| 国产婷婷精品av在线| 欧美日韩精品系列| 成人午夜视频网站| 免费成人在线观看视频| 亚洲免费视频中文字幕| 日韩一区二区三区在线| 99精品国产一区二区三区不卡| 男人操女人的视频在线观看欧美| 国产精品美女久久久久久2018 | 国产三级欧美三级日产三级99| 一本到高清视频免费精品| 黄网站免费久久| 亚洲自拍偷拍图区| 中文字幕免费不卡| 精品少妇一区二区三区在线视频| 一本到三区不卡视频| 国产麻豆精品一区二区|