java語言程序設(shè)計案例教程-第9章_第1頁
java語言程序設(shè)計案例教程-第9章_第2頁
java語言程序設(shè)計案例教程-第9章_第3頁
java語言程序設(shè)計案例教程-第9章_第4頁
java語言程序設(shè)計案例教程-第9章_第5頁
免費預(yù)覽已結(jié)束,剩余20頁可下載查看

下載本文檔

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

文檔簡介

第9章Applet基礎(chǔ)

在Java中,有兩種類型的程序:應(yīng)用程序(Application)和小應(yīng)用程序(Applet)。JavaApplet可以被HTML頁面引用,并可以在支持Java的瀏覽器中執(zhí)行,可以說Applet具有“激活因特網(wǎng)”的強大功能。運用本章的知識,將能夠開發(fā)自己的Applet和動態(tài)頁面。本章要點9.1JavaApplet概念9.2Applet繪制圖形與圖像處理9.3Applet的其他應(yīng)用思考與練習99.1JavaApplet概念

JavaApplet是用Java編寫的、含有可視化內(nèi)容的、并被嵌入Web頁中用來產(chǎn)生特殊頁面效果的小程序。JavaApplet程序的特點有:1.基本的繪畫功能2.動態(tài)頁面效果3.動畫和聲音的播放4.交互功能的實現(xiàn)5.窗口開發(fā)環(huán)境6.網(wǎng)絡(luò)交流能力的實現(xiàn)9.1JavaApplet概念

9.1.1JavaApplet的概念JavaApplet是一種非常重要的Java程序,是工作在Internet瀏覽器上的Java程序。JavaApplet主要用來將Java程序插入HTML網(wǎng)頁中,在網(wǎng)絡(luò)上傳輸,作為網(wǎng)頁的一部分來執(zhí)行。在Java問世的頭幾年里,Applet之所以如此熱門,其根本原因還是在于Java具有“讓Internet動起來”的能力。具體地說,就是Java能創(chuàng)建一種特殊類型的程序(通常稱作“小應(yīng)用程序”或者Applet),具備Java能力的Web瀏覽器可從網(wǎng)上下載這種程序,然后運行。目前,幾乎所有瀏覽器均支持動態(tài)HTML(DHTML)和腳本編制(支持XML的瀏覽器也有很多),所以比起Java剛剛問世的時候,瀏覽器能夠做的事情要多得多。但盡管如此,由于小應(yīng)用程序是用一種全功能的程序設(shè)計語言編制的,所以同HTML、XML和腳本語言的任何一種可能的組合相比,它仍然具有很好前景。9.1JavaApplet概念

9.1.1JavaApplet的概念A(yù)pplet的基本工作原理是這樣的:編譯好的字節(jié)碼文件(.class文件)保存在特定的WWW服務(wù)器上,同一個或另一個WWW服務(wù)器上保存著嵌入了該字節(jié)碼文件名的HTML文件。當某一個瀏覽器向服務(wù)器請求下載嵌入了Applet的HTML文件時,該文件從WWW服務(wù)器上下載到客戶端,由WWW瀏覽器解釋HTML中的各種標記,按照其約定將文件中的信息以一定的格式顯示在用戶屏幕上。當瀏覽器遇到HTML文件中的特殊標記,表明它嵌有一個Applet時,瀏覽器會根據(jù)這個Applet的名字和位置自動把字節(jié)碼從WWW服務(wù)器上下載到本地,并利用瀏覽器本身擁有的Java解釋器直接執(zhí)行該字節(jié)碼。Applet工作原理如圖9-1所示。8.1Java圖形用戶界面概述

圖9-1Applet的基本工作原理9.1JavaApplet概念

9.1.1JavaApplet的概念A(yù)pplet類似于組件,它所實現(xiàn)的功能是不完全的,與Application程序不同。Applet與Application的主要區(qū)別在于它們的執(zhí)行方式不同:(1)JavaApplet程序是在WWW瀏覽器環(huán)境下運行的,即不是完整獨立的運行程序;(2)運行JavaApplet程序的解釋器不是獨立的軟件,而是嵌在WWW瀏覽器中作為瀏覽器軟件的一部分。(3)JavaApplet程序中不需要有main方法,但是JavaApplet程序的主類必須是類庫中已定義好的類Applet或JApplet的子類。(4)JavaApplet程序可以直接利用瀏覽器或AppletViewer提供圖形用戶界面,而JavaApplication程序則必須另外書寫專用代碼來營建自己的圖形界面。9.1JavaApplet概念

9.1.2Applet類要編寫一個Applet,必須首先用以下方式創(chuàng)建一個類:importjava.applet.*;publicclassHelloWorldextendsApplet{

…}Applet的類必須為public,且它的名稱必須與它所在的文件名匹配;在這里,就是HelloWorld.java。而且,該類必須為java.applet.Applet的子類。java.applet.Applet類實際上是java.awt.Panel的子類。Applet的繼承關(guān)系如圖9-2所示。9.1JavaApplet概念

9.1.2Applet類圖9-2Applet類的繼承關(guān)系java.applet包包含有三個接口:AppletContext接口、AppletStub接口、AudioClip接口及一個Applet類。

圖9-2Applet類的繼承關(guān)系9.1JavaApplet概念

9.1.4Applet標記Applet程序在運行時,都在HTML文件中嵌入了Applet標記:<applet>…</applet>,其中至少包括三個參數(shù):code,height,width。除此之外,<applet>還有其他一些可選的參數(shù)。以下為Applet標記的完整句法:<applet[archive=archiveList]code=appletFile.classwidth=pixelsheight=pixels[codebase=codebaseURL][alt=alternateText][name=appletInstanceName][align=alignment][vspace=pixels][hspace=pixels]>[<paramname=appletAttribute1value=value>][<paramname=appletAttribute2value=value>]...</applet>9.1JavaApplet概念

9.1.4Applet標記每個選項的解釋如下:(1)archive=archiveList:這一可選的選項描述了一個或多個含有將被“預(yù)裝”的類和其他資源的archives。類的裝載由帶有給定codebase的AppletClassLoader的一個實例來完成。ArchiveList中的archives以逗號(,)分隔。(2)code=appletFile.class:這是一個必需的選項,它給定了含有已編譯好的Applet子類的文件名。也可用package.appletFile.class的格式來表示。這個文件與你要裝入的HTML文件的URL有關(guān),它不能含有路徑名。一般情況下,Applet子類的類文件與HTML文件放在同一個目錄中,所以無需路徑。如果類文件和HTML文件不在一個目錄下,需要用到<codebase>選項,也就是說,要改變Applet的URL,可使用<codebase>選項。9.1JavaApplet概念

9.1.4Applet標記(3)width=pixelsheight=pixels:這些必需的選項給出了Applet顯示區(qū)域的初始寬度和高度(以象素為單位),不包括Applet所產(chǎn)生的任何窗口或?qū)υ捒?。?)codebase=codebaseURL:這一可選的選項指定了Applet的URL―包含有Applet代碼的目錄。如果這一選項未指定,則認為Applet的類文件與HTML文件在同一個目錄中。(5)alt=alternateText:這一可選選項指定了當瀏覽器能讀取Applet標記但不能執(zhí)行JavaApplet時要顯示的文本。(6)name=appletInstanceName:這個可選選項為Applet實例指定有關(guān)名稱,從而使得在同一頁面上的Applet可以互相通信。9.1JavaApplet概念

9.1.4Applet標記(7)align=alignment:這個可選選項指定了Applet的對齊方式。它的可取值與基本的HTML中IMG標記的相應(yīng)屬性相同,為:left,right,top,texttop,middle,absmiddle,baseline,bottom和absbottom。(8)vspace=pixelshspace=pixels:這些可選選項指定了在Applet上下(vspace)及左右(hspace)的象素數(shù)目。其用法與IMG標記的vspace和hspace屬性相同。(9)<paramname=appletAttribute1value=value>:這個選項提供了一種可帶有由“外部”指定的數(shù)值的Applet,也就是說可以將value的值作為HTML參數(shù)傳遞給Applet去處理。它和JavaApplication程序的命令行參數(shù)的作用相同。Applet用getParameter()方法來存取參數(shù)。9.2Applet繪制圖形與圖像處理

9.2.1繪制圖形

Applet本身是一個AWT組件,因此它也具有一般AWT組件的圖形繪制及圖像處理功能。Applet程序中所采用的AWT的繪圖機制主要涉及三個方法:paint()方法、update()方法和repaint()方法,update()方法和paint()方法都有一個Graphics類的參數(shù)。Graphics類是畫圖的關(guān)鍵,它可以支持兩種繪圖:一種是基本的繪圖,如:畫線、矩形、圓等;另一種是畫圖像,主要用于動畫制作。Applet的顯示更新是由一個AWT線程來控制完成的,它主要負責兩種顯示更新情況:一是表示部分顯示區(qū)域被遮蓋、調(diào)整大小、最大最小化等,這種情況隨時會發(fā)生,需要系統(tǒng)調(diào)用paint()方法;二是程序需要重畫顯示區(qū)域,添加一些新的顯示內(nèi)容,需要調(diào)用repaint()方法。9.2Applet繪制圖形與圖像處理

9.2.1繪制圖形要進行繪圖,首先要找到一個Graphics類的對象。update()方法和paint()方法所傳遞的參數(shù)都是Graphics類的對象,因此主要是通過重載它們來進行繪圖,這也是在動畫程序中經(jīng)常使用的方法。我們還可以通過getGraphics()方法得到一個Graphics類的對象,這個對象和update()方法和paint()方法中所傳遞的對象一樣,都是該成員所對應(yīng)的Graphics類的對象。得到了Graphics類的對象,就可使用各種繪圖方法。1.paint(Graphicsg)方法:Applet本身是一個容器,因此任何輸出都必須用圖形方法paint()。當Applet程序首次被裝載,以及每次窗口放大、縮小、刷新時都要調(diào)用paint()方法。paint()是由AWT線程調(diào)用的,而不是由程序調(diào)用,當程序希望調(diào)用paint()方法時,用repaint()方法。paint()方法的參數(shù)是Graphics類的對象g,該對象不是由new產(chǎn)生的,而是由系統(tǒng)或其他方式直接將生好的Graphics對象當作方法的參數(shù),再交給paint()方法。paint()方法必須被重寫以繪制自己所需的內(nèi)容。9.2Applet繪制圖形與圖像處理

9.2.1繪制圖形

2.update()方法:update()方法用于更新圖形。它首先清除背景,然后設(shè)置前景,再調(diào)用paint()方法完成Applet中的具體繪圖。一般不重寫update()方法。3.repaint()方法:repaint()方法主要用于重繪圖形,它是通過調(diào)用update()方法來實現(xiàn)圖形重繪的。當組件外形發(fā)生變化時,系統(tǒng)自動調(diào)用repaint()方法。另外,在進行基本畫圖時,可以設(shè)定所需的顏色和字體等,這需要用到Font、FontMetrics(支持文字輸出的字體類)和Color三個類。9.2Applet繪制圖形與圖像處理

9.2.2圖像處理在Java中,類庫java.awt,java.awt.image和java.applet中都提供了支持圖像操作的類和方法,對圖像的操作包括載入、生成、顯示和處理。在Java中,圖像信息是封裝在抽象類Image中的,由于Image是一個抽象類,因此不能直接生成一個圖像對象,需要采用特殊的方法載入或生成圖像對象。1.載入圖像對于Applet,由于它主要在網(wǎng)絡(luò)上運行,因此網(wǎng)絡(luò)上圖像文件需要用URL形式來描述,例如:URLpicurl=newURL(“”);在Applet中提供了兩個方法來載入圖像對象:publicImagegetImage(URLurl)publicImagegetImage(URLurl,Stringname)例如:Imageimg1=getImage(picurl);Imageimg2=getImage(getCodeBase(),“img2.gif”);9.2Applet繪制圖形與圖像處理

9.2.2圖像處理2.跟蹤圖像下載為了在下載圖像時,避免出現(xiàn)殘缺不全的現(xiàn)象,需要對圖像的下載進行跟蹤。如果需要對圖像的載入情況進行跟蹤,可以使用類MediaTracker或接口ImageObserver。MediaTracker可以同時實現(xiàn)對圖像的同步或異步跟蹤,例如:MediaTrackertracker=newMediaTracker(aaa);//生成對象tracker.addImage(img,id);//加入需要跟蹤的圖像,img為要跟蹤的圖像,id為下載圖像的優(yōu)先級利用MediaTracker的方法checkID(int),checkAll(),statusID(int)和statusAll()可以異步跟蹤圖像的載入情況;利用方法waitForID(int)和waitForAll()可以同步跟蹤圖像的載入情況。9.2Applet繪制圖形與圖像處理

9.2.2圖像處理2.跟蹤圖像下載在調(diào)用某些異步執(zhí)行的方法,如Graphics的drawImage()方法、Image的getWidth()和getHeigth()等方法時,需要給出ImageObserver類型的參數(shù),以通過ImageObserver實例中的方法獲得圖像載入情況數(shù)據(jù)。ImageObserver是一個接口,它定義了一個方法來獲取圖像載入情況數(shù)據(jù):booleanimageUpdate(Imageimg,intinfoflags,intx,inty,intwidth,intheight);其中,infoflags對應(yīng)一些常量,例如:WIDTH、HEIGHT、ABORT等,用來獲得圖像的下載情況。9.2Applet繪制圖形與圖像處理

9.2.2圖像處理3.顯示圖像:顯示圖像是通過類Graphics的drawImage()方法來實現(xiàn)的:publicabstractbooleandrawImage(Imageimg,intx,inty,ImageObserverobs);在顯示圖像時,可以調(diào)用ImageObserver中的方法imageUpdate()來判斷圖像的載入情況并做相應(yīng)的處理。方法drawImage()在顯示了已經(jīng)載入的圖像數(shù)據(jù)后立即返回,因此圖像還沒有完全載入前,其顯示是不完整的,但可以使用MediaTracker類來使得圖像完全載入后再顯示。4.其他處理:在java.awt.image中,還有很多關(guān)于圖像生成和圖像處理的類,列舉如下:圖像生成:接口ImageProducer,類FilteredImageSource和MemoryImageSource等。圖像處理:類ImageFilter及其子類CropImageFilter和RGBImageFilte等。9.3Applet的其他應(yīng)用

Applet程序不僅可以對圖形、圖像進行處理,還可以對聲音、動畫等進行控制,使Web頁面上產(chǎn)生更豐富多彩的效果。9.3.1聲音處理Java提供了一個功能強大的處理數(shù)字音頻的類庫:javax.sound,使Java程序能處理、播放聲音或數(shù)字音頻文件。這就使得大家在瀏覽網(wǎng)頁的時候,不僅可以欣賞動畫,也可以欣賞音樂。Java語言支持的聲音格式有:AU、WAV、MIDI等,而且只有在Applet中才能播放聲音,Application中是不行的。Java支持16位,采樣頻率48KHz,立體聲的高品質(zhì)的音頻。但是好的音質(zhì)所占用的資源就越多,對于面向網(wǎng)絡(luò)的Applet程序來說,要選擇音質(zhì)和文件大小都應(yīng)比較適中才好。9.3Applet的其他應(yīng)用

9.3.1聲音處理有兩種方法可以在Applet中實現(xiàn)播放聲音:1.利用Applet類提供的play()方法直接播放聲音:publicvoidplay(URLurl)publicvoidplay(URLurl,Stringname)play()方法的調(diào)用格式與getImage()方法是完全一樣的,也采用URL來定位文件。如果要播放的聲音文件與Applet文件存放在同一個目錄下,就應(yīng)該使用如下的表達式:play(getCodeBase(),“a.mid”);a.mid聲音文件和Applet程序在同一個目錄下。如果找不到play()方法中指定的聲音文件,則聽不到聲音。而且play()方法是一次性播放的,不能反復(fù)播放。要想反復(fù)播放作為背景音樂,就必須使用第二種方法。9.3Applet的其他應(yīng)用

9.3.1聲音處理2.利用java.applet.AudioClip類和Applet類一起實現(xiàn)聲音播放:AudioClip中有三個方法:publicvoidplay():播放一遍publicvoidloop():循環(huán)播放publicvoidstop():停止播放為了得到AudioClip對象,可以利用Applet類提供的聲音裝載方法載入一個聲音文件,形成一個聲音對象實例:publicAudioClipgetAudioClip(URLurl)publicAudioClipgetAudioClip(URLurl,Stringname)創(chuàng)建了AudioClip對象,就可以裝載聲音了,也就是利用AudioClip的方法來進行聲音操作了。9.3Applet的其他應(yīng)用

9.3.2動畫特效動畫特效是Java多媒體世界中最吸引人,最精彩的一部分,也是難度較大的一部分內(nèi)容。Java的動畫原理很簡單,首先在屏幕上顯示動畫的第一

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論