電子教案--第12章.ppt_第1頁
電子教案--第12章.ppt_第2頁
電子教案--第12章.ppt_第3頁
電子教案--第12章.ppt_第4頁
電子教案--第12章.ppt_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第12章 Java Applet,本章導(dǎo)讀 1.Java Applet的運(yùn)行原理 2.Java Applet中播放聲音 3.網(wǎng)頁向Java Applet傳值 4.Java Applet中使用AWT組件 5.Java Applet中使用Swing組件 6.Java Applet中繪制圖形 7.Java Applet中繪制圖像 8.Java Applet 播放幻燈片和動畫 9.Java Applet的網(wǎng)絡(luò)功能,12.1 Java Applet的運(yùn)行原理,1Java Applet概述 2運(yùn)行原理 以下是一個(gè)Java Applet程序,我們用這個(gè)程序來說明 Java applet運(yùn)行原理。 (1)網(wǎng)頁

2、的編寫 Java Applet必須由瀏覽器來運(yùn)行,因此我們必須編寫一個(gè)超文本文件,告訴瀏覽器來運(yùn)行這個(gè)Java Applet。 假設(shè)Applet主類的名字是Boy,下面是一個(gè)簡單的html文件“l(fā)ike.html”, ,“l(fā)ike.html”文件告訴瀏覽器運(yùn)行主類是Boy的Java Applet。 超文本文件“l(fā)ike.html”中的標(biāo)記 和 告訴瀏覽器將運(yùn)行一個(gè)Java Applet,code告訴瀏覽器運(yùn) 行哪個(gè)Java Applet。code“=”后面是主類的字節(jié)碼文件。 (2)Java Applet的生命周期 一個(gè)Java Applet的執(zhí)行過程稱為這個(gè)Java Applet的生命 周期

3、。一個(gè)Java Applet的生命周期會涉及如下方法的調(diào)用執(zhí)行: init ()、start()、stop()、destroy()、paint(Graphics g),JVM創(chuàng)建的主類Boy的對象在生命周期內(nèi)將有下列行 為: 1)瀏覽器內(nèi)置的JVM創(chuàng)建了主類Boy對象后,立刻通知這個(gè)對象調(diào)用init()方法完成必要的初始化工作。初始 化的主要任務(wù)是創(chuàng)建所需要的對象、設(shè)置初始狀態(tài)、裝載圖像、設(shè)置參數(shù)等。 2)對象僅接著自動調(diào)用start()方法。在程序的執(zhí)行過程中,init()方法只被調(diào)用執(zhí)行一次。但start()方法將多次被自動調(diào)用執(zhí)行。除了進(jìn)入執(zhí)行過程時(shí)調(diào)用方法start()外,當(dāng)用戶從Ja

4、va Applet所在的Web頁面轉(zhuǎn)到其他頁面,然后又返回時(shí),start()將再次被調(diào)用,但不再調(diào)用init()方法。,當(dāng)瀏覽器離開Java Applet所在的頁面轉(zhuǎn)到其它頁面時(shí),主類創(chuàng)建的對象將調(diào)用stop()方法。如果瀏覽器又回到此頁,則start()又被調(diào)用來啟動Java Applet。在Java Applet的生命周期中,stop()方法也可以被調(diào)用多次。如果你在Java Applet中設(shè)計(jì)了播放音樂的功能,而沒有在stop()方法中給出停止播放它的有關(guān)語句,那么當(dāng)離開此頁去瀏覽其他頁時(shí),音樂將不能停止。如果沒有定義stop()方法,當(dāng)用戶離開Java Applet所在的頁面時(shí),Jav

5、a Applet將繼續(xù)使用系統(tǒng)的資源。若定義了stop()方法,則可以掛起Java Applet的執(zhí)行。,當(dāng)瀏覽器結(jié)束瀏覽時(shí),主類創(chuàng)建的對象自動執(zhí)行 destroy()方法,結(jié)束Java Applet 的生命。該方法是父 類Applet中的方法,不必重寫這個(gè)方法,直接繼承即可。 paint(Graphics g)方法可以使一個(gè)Java Applet在容器上顯示某些信息,如文字、色彩、背景或圖像等。在 Java Applet 的生命周期內(nèi)可以多次調(diào)用。例如,當(dāng)Java Applet被其它頁面遮擋,然后又重新放到最前面、改變?yōu)g覽器窗口的大小、以及Java Applet本身需要顯示信息時(shí),主類創(chuàng)建的

6、對象都會自動調(diào)用paint()方法。,3關(guān)于repaint()方法和update(Graphics g) repaint()方法和update(Graphics g) 是Component類中的一個(gè)方法。當(dāng)調(diào)用repaint方法時(shí),程序首先清除paint()方法以前所畫的內(nèi)容,然后再調(diào)用paint()方法。實(shí)際上當(dāng)我們調(diào)用repaint()方法時(shí),程序自動去調(diào)用update(Graphics g)方法,瀏覽器的Java運(yùn)行環(huán)境產(chǎn)生一個(gè)Graphics類的實(shí)例,傳遞給方法update(Graphics g)中的參數(shù) g,這個(gè)方法的功能是:清除paint()方法以前所畫的內(nèi)容,然后再調(diào)用paint

7、方法。因此我們可以在子類中重寫update方法(即隱藏父類的方法),根據(jù)需要來清除哪些部分或保留哪些部分。,在下面的例子2中,我們在paint()方法中,使用了repaint()方法,因此每當(dāng)Java Applet調(diào)用paint()方法時(shí),就會調(diào)用update方法。程序重寫了update方法,清除paint方法所繪制的部分內(nèi)容,并緊接著再調(diào)用paint()方法。,返回,12.2 Java Applet中播放聲音,用Java可以編寫播放.au、.aiff、.wav、.midi、.rfm格式的音頻。au格式是Java早期唯一支持的音頻格式。要 在Java Applet中播放聲音,可以使用Apple

8、t的一個(gè)靜態(tài)的方法(類方法): newAudioClip(URL url,String name) 或Applet類的實(shí)例方法: getAudioClip(Url url,String name) 根據(jù)參數(shù)url提供的地址,以及該處的聲音文件name,可以獲得一個(gè)用于播放的音頻對象(AudioClip類型對象)。這個(gè)音頻對象可以使用下列方法來處理聲音文件。 play() 播放聲音文件 name。 loop() 循環(huán)播放name。 stop() 停止播放name。例子3,返回,12.3 網(wǎng)頁向Java Applet傳值,我們可以在超文本中使用若干個(gè)標(biāo)志把值傳遞到Java Applet中,這樣就實(shí)

9、現(xiàn)動態(tài)地向程序傳遞信息,不必重新編譯程序,便于程序的維護(hù)和使用。例子4,返回,12.4 Java Applet中使用AWT組件,Applet類是容器的間接子類,因此我們可以在這個(gè)容器中添加組件,處理組件事件,完成一些工作。由于目前的瀏覽器僅僅支持JDK1.1版本中的類庫,所以Java Applet中只能使用JDK1.1版本公布的java.awt包中的組件,比如Button、TextField 、TextArea等。 在下面的例子中,我們把Java Applet的布局設(shè)置為 BorderLayout布局。,返回,12.5 Java Applet中使用Swing組件,如果你的機(jī)器安裝了SDK1.4

10、以后的版本,那么你的瀏覽器中的JVM就會被更新為當(dāng)前SDK所帶的JVM,這樣一來,你的瀏覽器就可以使用javax.awing包中的組件。使用javax.swing包中的組件時(shí),Java Applet的主類應(yīng)當(dāng)是JApplet的子類。JApplet是Applet的一個(gè)直接子類,在javax.swing包中。JApplet有許多新的特性: 不可以把組件直接添加到JApplet容器中。JApplet容器也含有一個(gè)稱為內(nèi)容面板的容器,應(yīng)當(dāng)把組件添加到內(nèi)容面板中。 不能為JApplet容器設(shè)置布局,而應(yīng)當(dāng)為JApplet容器的內(nèi)容面板設(shè)置布局。內(nèi)容面板的默認(rèn)布局是BorderLayout布局。JAppl

11、et容器通過調(diào)用方法:getContentPane(),得到內(nèi)容面板。例子6,返回,12.6 Java Applet中繪制圖形,1繪制文本 可以使用drawString方法在屏幕上顯示串對象。 drawString(String s, int x, int y) 從參數(shù)x、y指定的坐標(biāo)位置處,從左向右繪制參數(shù)s指定的字符串。 drawChars(char data,int offset, int length, int x, int y) 繪制data數(shù)組中的部分字符,length指定數(shù)組中要連續(xù)繪制的字符的個(gè)數(shù),offset是首字符在數(shù)組中的位置。,2繪制直線 drawLine(int x1

12、,int y1,int x2,int y2) 繪制從起點(diǎn)(x1,y1)到終點(diǎn)(x2,y2)的直線段。 3繪制矩形 drawRect (int x,int y,int w,int h) 繪制矩形。 fillRect (int x,int y,int w,int h) 填充矩形。 矩形的左上角的坐標(biāo)由參數(shù)x、y指定,矩形的寬和高由參數(shù)w、h指定。,4繪制圓角矩形 drawRoundRect(int x,int y,int w,int h,int arcW,int arcH) 繪制圓角矩形 fillRoundRect(int x,int y,int w,int h,int arcW,int arcH

13、) 填充圓角矩形 參數(shù)arcW、arcH指定圓角的尺寸,見圖12.4中的4個(gè)黑角部分。 5繪制橢圓 drawOval(int x,int y,int w,int h) 繪制橢圓。 drawOval(int x,int y,int w,int h) 繪制填充橢圓。 x、y給出橢圓距x軸和y軸的距離,參數(shù)w、h給出橢圓的寬和高。,6繪制圓弧 圓弧就是某個(gè)橢圓的一部分。 drawArc(int x,int y,int width,int height,int starAngle, int arcAngle) 繪制圓弧 fillArc(int x,int y,int width,int height,

14、int starAngle,int arcAngle) 填充圓弧 x、y、width、heigth指定橢圓的位置和大小,參數(shù)starAngle和 arcAngle的單位都是“度”。而起始角度的0度是3點(diǎn)鐘的方位。參數(shù)starAngle,arcAngle表示從starAngle的角度開始逆時(shí)針或順時(shí)針方向畫arcAngle度的弧,當(dāng)arcAngle是正值時(shí)為逆時(shí)針,否則為順時(shí)針。starAngle的值可以是負(fù)值,例如-90度是6點(diǎn)的方位。,7繪制多邊形 drawPolygon(int xPoints, int yPoints, int nPoints) 繪制多邊形。 fillPolygon(in

15、t xPoints, int yPoints, int nPoints) 填充多邊形。 參數(shù)數(shù)組xPoint和yPoint組成多邊形的頂點(diǎn)坐標(biāo),nPoints是頂點(diǎn)的數(shù)目。 下面的例子7繪制了一些基本圖形,返回,12.7 Java Applet中繪制圖像,圖像是矩形內(nèi)的一組像素。需要指出的是,Java支持兩種主要的圖像格式:GIF (Graphics Interchang Format)、JPEG(Join Phtographic Expert Group)。 Applet類提供了一個(gè)重要的方法: public Image getImage(URL url,String name) 這個(gè)方法返

16、回可以被顯示在屏幕上的Image對象的引用,即將URL地址中,文件名為name的文件加載的內(nèi)存,并返回該內(nèi)存的首地址。,有時(shí)我們想加載Java Applet程序所在的服務(wù)器上的圖像,那就必須要提供圖像文件所在的URL的目錄,例如: 運(yùn)行Java Applet的URL所指的目錄是: .200/java/。 如果Java Applet準(zhǔn)備顯示java目錄中的圖像,可以讓Java Applet調(diào)用從Applet繼承的方法: public URL getCodeBase(), 該方法返回一個(gè)URL對象,該對象包含Java Applet 所在的目錄,例如,返回的URL對

17、象含有的信息:.200/java。,返回,Applet還有一個(gè)類似的方法: public URL getDocumentBase(), 該方法返回一個(gè)URL對象,該對象是嵌入Java Applet的網(wǎng)頁的URL,例如,返回的URL對象含有的信息:.200/java/like.html。 學(xué)會使用下面的最基本的drawImage()方法,您可以很容易地使用另外的幾個(gè)方法。 public boolean drawImage(Image img,int x,int y,ImageObserver observer):,參數(shù)img是被

18、繪制的Image對象;x,y是要繪制指定圖像的矩形的左上角所處的位置,observer是加載圖像時(shí)的圖像觀察器。 由于Applet類已經(jīng)實(shí)現(xiàn)了ImageObserver接口,因此它可以作為加載圖像時(shí)的圖像觀察器。將this作為最后一個(gè)參數(shù)傳遞給drawImage()便可將Applet對象傳遞過去,如: public void paint(Graphics g) g.drawImage(img,0,3,this); ,當(dāng)我們使用drawImage(Image img, int x, int y, ImageObserver observer)來繪制圖像時(shí),如果Java Applet的寬或高設(shè)計(jì)的

19、不合理,可能就會出現(xiàn)圖像的某些部分未能繪制到Java Applet中 為了克服這個(gè)缺點(diǎn),可以使用drawImage()的另一個(gè)方法: public boolean drawImage(Image img,int x,int y,int width ,int height , ImageObserver observer) 在矩形內(nèi)繪制加載的圖像。參數(shù)img是被繪制的Image 對象;x,y是要繪制指定圖像的矩形的左上角所處的位置,width和height指定矩形的寬和高,observer是加載圖像時(shí)的圖像觀察器。 。,使用該方法時(shí),不管原始圖像的高和寬是多少,該圖像會自動按比例調(diào)整自身大小以便

20、適應(yīng)目標(biāo)區(qū)域的尺寸。 如果你不想讓圖像有比例上的變化,在繪制之前可以 通過 Image類提供的方法獲取被加載的圖像的寬和高。如: img.getHeight(this); img.getWidth(this); 這兩個(gè)方法的參數(shù)是實(shí)現(xiàn)ImageObserver接口類創(chuàng)建的對象,Java 所有組件已經(jīng)實(shí)現(xiàn)了該接口,因此任何一 個(gè)組件都可以作為圖象觀察器。 下面的例子8繪制了兩幅圖像。,返回,12.8 Java Applet 播放幻燈片和動畫,HTML也可以將圖片貼到網(wǎng)頁上去,但在HTML中想播 放幻燈片確實(shí)是一件不現(xiàn)實(shí)的事情,因?yàn)闉榱丝椿脽羝仨氃诙鄠€(gè)網(wǎng)頁間切換,這是件痛苦的事情。在下 面這個(gè)Java Applet中,用戶只需單擊“next”按鈕和“previous”按鈕就可以前后變換幻燈片。例子9 下面是用本章的知識和多線程編寫的一個(gè)動畫程序。 動畫是一種錯(cuò)覺,運(yùn)動的錯(cuò)覺是通過快速顯示一組圖片造成的,而這些圖片在內(nèi)容上只有微小的變化。 在下面

溫馨提示

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

最新文檔

評論

0/150

提交評論