第18章音樂播放1——小程序_第1頁
第18章音樂播放1——小程序_第2頁
第18章音樂播放1——小程序_第3頁
第18章音樂播放1——小程序_第4頁
第18章音樂播放1——小程序_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、能力目標(biāo):能力目標(biāo): 理解小程序applet的生命周期及常用方法。 學(xué)會(huì)在小程序里繪制圖形、圖像和文字。 理解如何通過html文件向小程序傳遞參數(shù)值。 能編寫音樂播放小程序,還能結(jié)合多線程,在小程序中動(dòng)態(tài)顯示當(dāng)前時(shí)間。內(nèi)容介紹 18.1 任務(wù)預(yù)覽 18.2 小程序 18.3 生命周期與常用方法 18.4 播放聲音 18.5 網(wǎng)頁傳值 18.6 繪制圖像 18.7 狀態(tài)欄動(dòng)態(tài)顯示時(shí)間 18.8 本章小結(jié) 18.9 實(shí)訓(xùn)18:音樂播放與時(shí)間顯示18.1 任務(wù)預(yù)覽 本章實(shí)訓(xùn)程序運(yùn)行結(jié)果: 18.2 小程序 java程序有: application,獨(dú)立執(zhí)行的應(yīng)用程序。 applet,小應(yīng)用程序,簡稱

2、小程序,嵌入瀏覽器運(yùn)行。通過把小程序嵌入到 html網(wǎng)頁文件而實(shí)現(xiàn)。 java.applet包的applet類是小程序的根, 編寫小程序必須自定義一個(gè)繼承applet或japplet的類。 japplet位于javax.swing包,是applet的子類。 applet容器默認(rèn)布局是flowlayout,japplet容器是borderlayout。 jdk提供了模擬瀏覽器運(yùn)行命令appletviewer(小程序查看器)?!纠?8-1】編寫繪制矩形和橢圓的小程序。 java源程序如下(存放在example1.java文件):import javax.swing.japplet;import j

3、ava.awt.*; /下面是小程序主類public class example1 extends japplet public void paint(graphics g)g.drawrect(10, 10, 200, 100);g.drawoval(10, 10, 200, 100); 網(wǎng)頁文件如下(存放在example1.html文件):18.3 生命周期與常用方法 生命周期:小程序從開始運(yùn)行到結(jié)束的整個(gè)過程。 與生命周期緊密關(guān)聯(lián)并能自動(dòng)執(zhí)行5個(gè)方法:(1)void init():初始化方法。(2)void start():啟動(dòng)方法。(3)void stop():停止方法。(4)void

4、 destroy():銷毀方法。 這4個(gè)方法是根類applet定義,都能自動(dòng)執(zhí)行。編程者可以按需要在小程序主類中重寫這些方法。(5)void paint(graphics g):繪制圖形或文字的方法,來自容器根類container。 其中g(shù)raphics是圖形上下文(圖形環(huán)境)抽象類,對(duì)象要從其他圖形上下文中獲取,或者通過調(diào)用組件的getgraphics()方法來構(gòu)建。graphics對(duì)象g相當(dāng)畫筆, 【例18-2】編寫測試小程序生命周期的程序。 public class example2 extends japplet stringbuffer strbuf = new stringbuff

5、er(); public void init() printinfo(初始化.); public void start() printinfo(啟動(dòng).); public void stop() printinfo(停止.); public void destroy() printinfo(銷毀.); public void paint(graphics g) g.drawstring(strbuf.tostring(), 10, 20); public void printinfo(string info)system.out.print(info); strbuf.append(info);

6、this.repaint(); /調(diào)用重繪方法,主動(dòng)執(zhí)行paint方法 還有網(wǎng)頁文件 18.4 播放聲音 java可播放wav、mid(midi)、aiff或au等音頻文件。 小程序根類applet與聲音播放相關(guān)的方法:(1)audioclip getaudioclip(url url):獲取url類參數(shù)指定的音頻剪輯對(duì)象。 audioclip接口聲明了3個(gè)方法: void play():播放音頻剪輯。 void loop():循環(huán)播放音頻剪輯。 void stop():停止播放音頻剪輯。 例:播放本機(jī)iis服務(wù)器的音頻文件sheep.wav:public void start() try u

7、rl url = new url(/sheep.wav); audioclip audio = this.getaudioclip(url); audio.play(); /播放聲音。也可使用 this.play(url) catch(malformedurlexception e) 構(gòu)造url對(duì)象需要處理malformedurlexceptionl異常。(2)static final audioclip newaudioclip(url url): 該靜態(tài)方法與方法(1)功能一樣,可用類名直接調(diào)用。 例:audioclip audio = japplet.new

8、audioclip(url); audio.loop(); /循環(huán)播放(3)audioclip getaudioclip(url url, string name)(4)void play(url url):播放指定音頻。(5)void play(url url, string name)(6)url getcodebase():獲取代碼的基址,返回url對(duì)象。代碼是指小程序編譯后的字節(jié)碼?;肥亲止?jié)碼文件的目錄。(7)url getdocumentbase():獲取嵌入小程序的網(wǎng)頁文檔(html文件)基址,返回url對(duì)象?!纠?8-3】編寫播放聲音的小程序。 import javax.swi

9、ng.*;import java.awt.*;import java.awt.event.*;import java.applet.audioclip;public class example3 extends jappletimageicon icon = new imageicon(welcome.png); /圖標(biāo)jlabel label = new jlabel(請(qǐng)選擇播放或循環(huán)播放聲音:);jpanel panel = new jpanel();jbutton buttons = new jbutton(播放), new jbutton(循環(huán)), new jbutton(停止) ;

10、/按鈕數(shù)組audioclip audio; /音頻剪輯public void init() /初始化方法 audio = this.getaudioclip(this.getcodebase(), sheep.wav); label.seticon(icon); this.add(label, borderlayout.north); for(int i=0;i3;i+) buttonsi.addactionlistener(new actionhandler(); panel.add(buttonsi); this.add(panel, borderlayout.center);/按鈕動(dòng)作事

11、件監(jiān)聽處理類(內(nèi)部類):class actionhandler implements actionlistener public void actionperformed(actionevent e)if (e.getsource()=buttons0) audio.play(); else if (e.getsource()=buttons1) audio.loop(); else if (e.getsource()=buttons2) audio.stop(); 在eclipse環(huán)境下編程,不需要手工編寫html網(wǎng)頁文件。 18.5 網(wǎng)頁傳值 通過網(wǎng)頁傳值,同一個(gè)小程序運(yùn)行時(shí)可輸出不同的結(jié)

12、果。 【例18-4】編寫網(wǎng)頁文件傳值的小程序。 java源程序如下(存放在example4.java文件):public class example4 extends japplet string str;public void init()str = this.getparameter(prmt); public void paint(graphics g)g.drawstring(str, 10, 20); 網(wǎng)頁文件如下(存放在example4.html文件): 獲取參數(shù)方法:string getparameter(string name):返回超文本標(biāo)記中指定的參數(shù)值。 允許在網(wǎng)頁中設(shè)置

13、多個(gè)參數(shù),于是小程序可以獲取多個(gè)值。 【例18-5】編寫網(wǎng)頁傳值的音樂播放小程序。在下拉組合框中選擇音頻文件名,單擊“播放”按鈕以播放;單擊“循環(huán)”按鈕,反復(fù)播放;單擊“停止”按鈕,停止播放。其中音頻文件名通過網(wǎng)頁傳遞過來。 public class example5 extends jappletimage img;imageicon icon; /圖標(biāo)jlabel labelup = new jlabel(請(qǐng)選播歌曲,或循環(huán)播放);jpanel panel = new jpanel();jcombobox combobox = new jcombobox();jbutton buttons

14、 = new jbutton(播放), new jbutton(循環(huán)), new jbutton(停止) ;string names = new string3; /音頻文件名數(shù)組audioclip audios = new audioclip3; /音頻剪輯數(shù)組audioclip audio; /音頻剪輯 public void init() /初始化方法 img = this.getimage(this.getcodebase(), welcome.png); icon = new imageicon(img); /由圖像構(gòu)造圖標(biāo) labelup.seticon(icon); names0

15、 = this.getparameter(music1); /獲取網(wǎng)頁參數(shù)值 panel.add(combobox); for(int i=0;i3;i+) combobox.additem(namesi); audiosi=this.getaudioclip(this.getcodebase(), namesi); buttonsi.addactionlistener(new actionhandler(); panel.add(buttonsi); combobox.addactionlistener(new actionhandler(); this.add(labelup, borde

16、rlayout.north); this.add(panel, borderlayout.center); audio = audios0; class actionhandler implements actionlistener public void actionperformed(actionevent e)if(e.getsource() = combobox) audio = audioscombobox.getselectedindex(); else if (e.getsource() = buttons0) audio.play(); else if (e.getsource

17、() = buttons1) audio.loop(); else if (e.getsource() = buttons2) audio.stop(); 在eclipse開發(fā)環(huán)境下編程,只需 設(shè)置參數(shù)名和參數(shù)值便可直接運(yùn) 行,而無需編寫網(wǎng)頁文件。 18.6 繪制圖像 小程序根類applet中,與圖像有關(guān)的方法:(1)image getimage(url url)(2)image getimage(url url, string name) 圖像通過調(diào)用imageicon類構(gòu)造方法轉(zhuǎn)為一個(gè)圖標(biāo),在標(biāo)簽或按鈕上顯示。也可使用paint方法直接繪出。 【例18-6】編寫繪制圖像的小程序。publi

18、c class example6 extends jappletimage img;public void init() img = this.getimage(this.getcodebase(), web.gif); public void paint(graphics g) g.drawimage(img, 10, 10, 40, 40, this); /繪制圖像 grahpics類drawimage方法的4種重載形式:(1)boolean drawimage(image img, int x, int y, imageobserver observer):在給定位置繪制圖像。最后一個(gè)參

19、數(shù)是圖像觀察器,可指定為當(dāng)前對(duì)象this(或設(shè)為null)。(2)boolean drawimage(image img, int x, int y, int width, int height, imageobserver observer):圖像按比例縮放到給定的尺寸。(3)boolean drawimage(image img, int x, int y, color bgcolor, imageobserver observer):按給定位置和背景色繪制圖像。(4)boolean drawimage(image img, int x, int y, int width, int hei

20、ght, color bgcolor, imageobserver observer):按給定的位置、尺寸和背景色繪制圖像。18.7 狀態(tài)欄動(dòng)態(tài)顯示時(shí)間 小程序設(shè)置菜單欄和顯示狀態(tài)欄方法:(1)void setjmenubar(jmenubar menubar):設(shè)置小程序菜單欄。于是小程序中可以擁有自己的菜單。 注:本方法只在japplet類中定義,applet類沒有。(2)void showstatus(string msg) 除了菜單欄、狀態(tài)欄,也可在小程序中設(shè)置工具欄。 菜單欄、工具欄及其上面的組件要獨(dú)立構(gòu)建。而狀態(tài)欄則是小程序本身自帶的。 【例18-7】在例18-6小程序基礎(chǔ)上, 增

21、加狀態(tài)欄,用于顯示系統(tǒng)時(shí)間,每隔 一秒,動(dòng)態(tài)刷新當(dāng)前時(shí)間。public class example7 extends japplet implements runnableimage img; date date; thread thread;public void run() /線程運(yùn)行方法 while(true)date = new date(); /當(dāng)前日期this.showstatus(date.tostring();try thread.sleep(1000); catch(interruptedexception e) public void init()img = this.ge

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論