




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
在本書第1章中,我們曾簡要地介紹了Applet小程序的一般編譯、運行所需步驟。本章將更詳細地討論一下Applet編程問題。,9.1 關(guān)于Applet類 9.2 Applet中的文件操作 9.3 使用Applet訪問數(shù)據(jù)庫,第9章Applet,Return,在這一節(jié)里將介紹有關(guān)Applet類的相關(guān)知識。Applet類為小應(yīng)用程序提供了必不可少的支持。,9.1 關(guān)于Applet類,Return,9.1.1 Applet基礎(chǔ) 9.1.2 Applet類 9.1.3 Applet體系結(jié)構(gòu),9.1.1 Applet基礎(chǔ),Applet類被包含在名叫java.applet的類庫里,它提供了一些方法,使用它們可以在小應(yīng)用程序的執(zhí)行過程中進行更嚴密的控制。除此以外,java.applet還定義了一些接口,例如:AppletContext、AudioClip和AppletStub等所有的小應(yīng)用程序都是Applet類的子類。因此,所有的小應(yīng)用程序都必須引用java.applet類庫。既然所有的小應(yīng)用程序都運行在一個窗口中,那么引入對這個窗口的支持類庫就是必不可少的。需要注意的是,小應(yīng)用程序并非基于控制臺的Java運行環(huán)境的解釋器所執(zhí)行的,而是由Web瀏覽器或小應(yīng)用程序閱讀器執(zhí)行。一般是由標(biāo)準(zhǔn)的小應(yīng)用程序閱讀器appletviewer生成的,appletviewer由JDK(java開發(fā)工具)提供。但讀者能夠按自己的喜好選擇任何小應(yīng)用程序閱讀器或瀏覽器。 與大多數(shù)程序不同的是,一個小應(yīng)用程序的執(zhí)行不是從main()開始的。實際上,沒有多少小應(yīng)用程序使用main(),小應(yīng)用程序的執(zhí)行用一種完全不同的機制啟動和控制,我們接下來將對這種機制進行介紹。小應(yīng)用程序窗口的輸出并不是由函數(shù)System.out.println( )完成的,而是由各種不同的AWT方法來實現(xiàn),例如drawString( ),這個方法可以向窗口的某個由X、Y坐標(biāo)決定的特定位置輸出一個字符串。同樣的,小應(yīng)用程序窗口的輸入與一般的應(yīng)用程序不同。 只要小應(yīng)用程序經(jīng)過編譯,它就被包含在一個HTML文件中,并使用APPLET標(biāo)記。這之后當(dāng)支持Java的Web瀏覽器遇到HTML文件中的APPLET標(biāo)記時,小應(yīng)用程序就能被執(zhí)行。為了更方便地觀察和測試小應(yīng)用程序,只需在編制的Java源程序代碼的頭部加入一個包含APPLET標(biāo)記的注釋即可。用這種方法,代碼就能用小應(yīng)用程序所需的HTML語句記述下來,這樣,只要啟動小應(yīng)用程序閱讀器并指定Java源代碼文件為目標(biāo)文件,就可以測試經(jīng)過編譯的小應(yīng)用程序了。,Return,9.1.2 Applet類,Applet類定義了教材P221頁表9-1中所示的一些方法。Applet類為小應(yīng)用程序的執(zhí)行如啟動、中止等提供了所有必需的支持。它還提供了裝載和顯示圖像的方法,以及裝載和播放語音片斷的方法。Applet擴展了AWT類中的Panel。依此類推,Panel擴展了類Container,Container擴展了Component。些類都為Java的基于窗口的圖形接口提供了支持。這樣,Applet為基于窗口的所有活動都提供了支持。,Return,9.1.3 Applet體系結(jié)構(gòu),由于小應(yīng)用程序是一種基于窗口的程序。所以,它的體系結(jié)構(gòu)與一般的基于控制臺的程序是不同的。如果對Windows編程很熟悉,在深入小應(yīng)用程序編程時就能夠得心應(yīng)手。如果不是這樣的話,就必須先要理解幾個重要的概念。 首先,小應(yīng)用程序是由事件驅(qū)動的。盡管我們在這里并不關(guān)心事件處理的機制,但是對于事件驅(qū)動機制如何影響到小應(yīng)用程序的設(shè)計這一問題,獲得一般性的理解還是很重要的。一個小應(yīng)用程序類似于系列提供中斷服務(wù)的子程序的集合。程序就是這樣運行的。在事件發(fā)生之前,小應(yīng)用程序一直處于等待狀態(tài)中。一旦事件發(fā)生,小應(yīng)用程序就會采取相應(yīng)措施并迅速將控制權(quán)交給AWT。這一點是很關(guān)鍵的。在大部分時間里,小應(yīng)用程序都不會進入操作運行模式而長久地保持控制權(quán)。相反的,它必須針對特定的事件作出相應(yīng)的動作并把控制交給AWT的運行環(huán)境。在有些情況下,小應(yīng)用程序需要獨立完成一些重復(fù)的作業(yè)(例如,在窗口中顯示滾動信息),這時,必須再啟動一個額外的線程。 其次,用戶可以與小應(yīng)用程序進行交互,而不是通過其他方式。我們都知道,在一個非窗口界面的程序中,當(dāng)程序需要輸入時,它會提示用戶并調(diào)用一定的輸入方法,例如readLine()。而在小應(yīng)用程序中,并不是這樣運作的。相反,用戶可以按照自己的喜好隨意地與小應(yīng)用程序進行交互。這些交互被送至小應(yīng)用程序,作為小應(yīng)用程序必須作出響應(yīng)的事件。例如,當(dāng)用戶在小應(yīng)用程序的窗口中點擊鼠標(biāo)時,一個鼠標(biāo)點擊事件就產(chǎn)生了。如果用戶在小應(yīng)用程序窗口中的焦點處按下一個鍵,一個按鍵事件就被產(chǎn)生。,幾乎大多數(shù)的小應(yīng)用程序都重載一套方法,這些方法提供了瀏覽器或小應(yīng)用程序閱讀器與小應(yīng)用程序之間的接口以及前者對后者的執(zhí)行進行控制的基本機制。這套方法中的四個:init()、start()、stop()和destroy()是由Applet所定義的。另一個方法,paint()是由AWT組件類定義的。所有這些方法的具體實現(xiàn)也都被提供。小應(yīng)用程序并不需要重載那些它們沒有用到的方法。但是,只有非常簡單的小應(yīng)用程序才不需要定義全部的方法。這5個方法組成了程序的基本主框架,見教材P223頁程序段。,1Applet主框架,知道程序主框架中所示的各種方法的排列順序是很重要的。當(dāng)一個小應(yīng)用程序開始執(zhí)行時,AWT就以如下順序調(diào)用以下的方法:1. init(); 2. start(); 3. paint()。 當(dāng)一個小應(yīng)用程序被終止時,下列方法就按如下順序被調(diào)用:1. stop(); 2. destroy()。整個過程見教材P224頁圖9-1所示。,2Applet的初始化與終止,init():這是被調(diào)用的第一個方法。是初始化變量的地方。這個方法在小應(yīng)用程序運行期間僅被調(diào)用一次。 start():這是在init()之后被調(diào)用。它也在小應(yīng)用程序被終止后重新啟動時調(diào)用。 注意:Init()僅在小應(yīng)用程序第一次被裝載時調(diào)用一次,而start()卻在每一次小應(yīng)用程序的HTML文檔被顯示在屏幕上時都被調(diào)用。因此,如果用戶離開一個網(wǎng)頁之后重新進入時,小應(yīng)用程序就會從start()開始重新執(zhí)行。 paint():在每一次小應(yīng)用程序的輸出必須重畫窗口時,paint()方法都被調(diào)用。paint()方法也在小應(yīng)用程序開始執(zhí)行時被調(diào)用。paint()方法有一個Graphics 類型的參數(shù)。這個參數(shù)包含了圖像上下文,描述了小應(yīng)用程序所運行的環(huán)境。在需要對小應(yīng)用程序進行輸出時,這個上下文將被用到。 stop():當(dāng)Web瀏覽器離開包含小應(yīng)用程序的HTML文件時,stop()方法就被調(diào)用,如在瀏覽器中去另一個頁面時。當(dāng)stop()被調(diào)用時,小應(yīng)用程序很可能在運行。應(yīng)該使用stop()來掛起一些在小應(yīng)用程序不可見時不需要運行的線程。當(dāng)用戶回到此頁面時,就能重新啟動它們。 destroy():當(dāng)環(huán)境決定了小應(yīng)用程序需要完全從內(nèi)存中移去時,destroy()方法被調(diào)用。在這時候,應(yīng)該釋放任何小應(yīng)用程序可能用到的資源。stop()方法總是在destroy()之前被調(diào)用。,現(xiàn)在讓我們更仔細地討論一下上述方法,在某些情況下,小應(yīng)用程序可能需要覆蓋另外一個AWT所定義的方法,即update()。這個方法在小應(yīng)用程序要求窗口的一部分被重畫時被調(diào)用。默認的update()的方法是先用默認的背景顏色填充小應(yīng)用程序窗口,再調(diào)用paint()方法。如果在填充背景時用的顏色與paint()方法中使用的不同,那么在每次update()被調(diào)用時,也就是只要窗口被重畫時,用戶將會感覺到默認背景的閃動。避免這個問題的一種方法是重載update()方法,從而使它完成所有必要的顯示功能。然后,使paint()簡單地調(diào)用update()。這樣,在一些應(yīng)用中,小應(yīng)用程序?qū)⒅剌dpaint()和update(),如下所示。 public void update(Graphics g) / redisplay your window, here. public void paint(Graphics g) update(g); ,3重載update()方法,Return,9.2 Applet中的文件操作,本節(jié)介紹Applet中與文件操作、字體屬性相關(guān)的一些問題。,Return,9.2.1 圖形文件的讀入 9.2.2 聲音文件的讀入 9.2.3 Applet,在Java中,我們可以直接載入并輸出圖形文件格式。所支持的文件格式有兩種,分別為.gif和.jpg格式(不支持.bmp文件格式)。只要能夠給定圖形文件的位置和文件名,就可以通過getImage()這個方法載入所需要的圖形。 在這里所說的位置,是指圖形文件所在的URL位置。也就是說,讀者不僅可以在Java程序中使用存放在自己硬盤上的圖形文件,還可以通過URL指定的方式,直接讀取網(wǎng)絡(luò)資源上的圖形文件,而且使用的方式非常簡單。當(dāng)然,Applet運行的時候,要保證網(wǎng)絡(luò)暢通,這樣才能顯示出該圖形。 getImage()方法主要出現(xiàn)在兩個類里,第一個是java.applet.Applet中,另外一個是java.awt.Tookit。在編寫Java應(yīng)用程序時,只能使用java.awt.Tookit中的方法。而編寫Java小應(yīng)用程序時,二種都可以使用。getImage()方法的使用格式包括: (1)在java.applet.Applet類中: Image getImage(URL,url) Image getImage(URL url,String name) (2)在java.awt.Tookit類中: Image getImage(String filename) Image getImage(URL url),9.2.1 圖形文件的讀入,Return,9.2.2聲音文件的讀入,聲音文件和Java讀入圖形格式的原理是一樣的。但是,Java目前好像還只支持AU格式的聲音文件。這種格式并不多見,所以需要讀者將別的文件格式轉(zhuǎn)化成為這種格式。它的調(diào)入和播放方法如下: import java.applet.AudioClip; AudioClip bgsound=getAudioClip(URL url): bgsound.play(); / 播放一次 bgsound.loop(); / 循環(huán)播放 bgsound.stop(); / 停止播放 / 也可以直接一次性地讀入并播放: play(getCodeBase(),“audio/welcome.au”); 它的URL的使用方法同前面讀入圖像時所使用的方法是一樣的。,Return,9.2.3 Applet,從前面的介紹中我們已經(jīng)知道,Graphics類的方法drawString()可以在屏幕的指定位置顯示一個字符串,而Java中還有一個類Font,使用它可以獲得更加豐富多采和逼真精確的字體效果。 一個Font類的對象表示了一種字體的顯示效果,包括字體類型、字型和字號??捎孟旅娴恼Z句創(chuàng)建一個Font類的對象。 Font Myfont=new Font(“楷體“, Font.BOLD, 14); 其含義是創(chuàng)建一個名為Myfont的Font類:設(shè)置字體大小為14磅,類型為楷體,加粗型。 另外的兩種是Font.PLAIN(正常)、Font.ITALIC(斜體)。 該類定義完后,就可用g.setFont(Myfont)方法設(shè)置了。以后在沒有設(shè)置新的字體之前,都將會用這個已經(jīng)設(shè)置好了的字體顯示字體。 分析教材P227228頁的例子。,Return,9.3 使用Applet訪問數(shù)據(jù)庫,本節(jié)以Access數(shù)據(jù)庫為例簡要說明一下如何實現(xiàn)數(shù)據(jù)庫的相關(guān)操作。首先使用Microsoft Access創(chuàng)建一個數(shù)據(jù)庫,具體內(nèi)容讀者可自行定義。 為了運行這個小應(yīng)用程序,用戶必須首先創(chuàng)建一個與MyTable數(shù)據(jù)庫相對應(yīng)的ODBC數(shù)據(jù)源。為了通過ODBC使用Access,用戶必須先安裝Access ODBC驅(qū)動程序。如果沒有安裝該驅(qū)動程序,程序的運行過
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流企業(yè)智能分揀設(shè)備數(shù)據(jù)庫租賃與數(shù)據(jù)安全評估協(xié)議
- 互聯(lián)網(wǎng)廣告聯(lián)盟精準(zhǔn)投放服務(wù)合同
- 繼子女撫養(yǎng)權(quán)解除與監(jiān)護責(zé)任轉(zhuǎn)移協(xié)議
- 汽車美容連鎖品牌合作經(jīng)營普通合伙合同樣本
- 農(nóng)村土地流轉(zhuǎn)與農(nóng)業(yè)產(chǎn)業(yè)升級合作協(xié)議
- 《初中數(shù)學(xué)公式復(fù)習(xí)課件完善版》
- 內(nèi)部人員溝通培訓(xùn)流程圖
- 《幼兒園中班家長會課件》
- 《眉山市房地產(chǎn)市場分析》課件
- 聚氯乙烯生產(chǎn)工藝流程
- 設(shè)計管理資料課件
- 《中國石油天然氣集團公司員工安全環(huán)保履職考評管理辦法》
- 毛竹腳手架搭設(shè)施工方案
- 鄭州住宅小區(qū)調(diào)研
- 鞋廠制革企業(yè)安全風(fēng)險分級管控和隱患排查治理雙體系方案資料(2022-2023新標(biāo)準(zhǔn))
- 消防應(yīng)急預(yù)案流程圖
- 2022年最新小升初英語試卷(含答案)
- “轉(zhuǎn)觀念、勇?lián)?dāng)、強管理、創(chuàng)一流”對標(biāo)工作整改方案
- 模具試模通知單
- 全科醫(yī)師培訓(xùn)的全科門診主要內(nèi)容教學(xué)
- 蘇州納米所綜合考試要點
評論
0/150
提交評論