Java語言程序的設(shè)計實驗指第09章_第1頁
Java語言程序的設(shè)計實驗指第09章_第2頁
Java語言程序的設(shè)計實驗指第09章_第3頁
Java語言程序的設(shè)計實驗指第09章_第4頁
Java語言程序的設(shè)計實驗指第09章_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 在本書第1章中,我們曾簡要地介紹了applet小程序的一般編譯、運(yùn)行所需步驟。本章將更詳細(xì)地討論一下applet編程問題。9.1 關(guān)于關(guān)于applet類類 9.2 applet中的文件操作中的文件操作9.3 使用使用applet訪問數(shù)據(jù)庫訪問數(shù)據(jù)庫第第9 9章章appletapplet return 在這一節(jié)里將介紹有關(guān)applet類的相關(guān)知識。applet類為小應(yīng)用程序提供了必不可少的支持。9.1 關(guān)于關(guān)于applet類類 return9.1.1 applet基礎(chǔ) 9.1.2 applet類9.1.3 applet體系結(jié)構(gòu)9.1.1 applet基礎(chǔ)基礎(chǔ) applet類被包含在名叫java

2、.applet的類庫里,它提供了一些方法,使用它們可以在小應(yīng)用程序的執(zhí)行過程中進(jìn)行更嚴(yán)密的控制。除此以外,java.applet還定義了一些接口,例如:appletcontext、audioclip和appletstub等所有的小應(yīng)用程序都是applet類的子類。因此,所有的小應(yīng)用程序都必須引用java.applet類庫。既然所有的小應(yīng)用程序都運(yùn)行在一個窗口中,那么引入對這個窗口的支持類庫就是必不可少的。需要注意的是,小應(yīng)用程序并非基于控制臺的java運(yùn)行環(huán)境的解釋器所執(zhí)行的,而是由web瀏覽器或小應(yīng)用程序閱讀器執(zhí)行。一般是由標(biāo)準(zhǔn)的小應(yīng)用程序閱讀器appletviewer生成的,appletv

3、iewer由jdk(java開發(fā)工具)提供。但讀者能夠按自己的喜好選擇任何小應(yīng)用程序閱讀器或瀏覽器。 與大多數(shù)程序不同的是,一個小應(yīng)用程序的執(zhí)行不是從main()開始的。實際上,沒有多少小應(yīng)用程序使用main(),小應(yīng)用程序的執(zhí)行用一種完全不同的機(jī)制啟動和控制,我們接下來將對這種機(jī)制進(jìn)行介紹。小應(yīng)用程序窗口的輸出并不是由函數(shù)system.out.println( )完成的,而是由各種不同的awt方法來實現(xiàn),例如drawstring( ),這個方法可以向窗口的某個由x、y坐標(biāo)決定的特定位置輸出一個字符串。同樣的,小應(yīng)用程序窗口的輸入與一般的應(yīng)用程序不同。 只要小應(yīng)用程序經(jīng)過編譯,它就被包含在一個

4、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)用程序了。return9.1.2 applet類類 applet類定義了教材p221頁表9-1中所示的一些方法。applet類為小應(yīng)用程序的執(zhí)行如啟動、中止等提供了所有必需的支持。它還提供了裝載和顯示圖像

5、的方法,以及裝載和播放語音片斷的方法。applet擴(kuò)展了awt類中的panel。依此類推,panel擴(kuò)展了類container,container擴(kuò)展了component。些類都為java的基于窗口的圖形接口提供了支持。這樣,applet為基于窗口的所有活動都提供了支持。return9.1.3 applet體系結(jié)構(gòu) 由于小應(yīng)用程序是一種基于窗口的程序。所以,它的體系結(jié)構(gòu)與一般的基于控制臺的程序是不同的。如果對windows編程很熟悉,在深入小應(yīng)用程序編程時就能夠得心應(yīng)手。如果不是這樣的話,就必須先要理解幾個重要的概念。 首先,小應(yīng)用程序是由事件驅(qū)動的。盡管我們在這里并不關(guān)心事件處理的機(jī)制,但是

6、對于事件驅(qū)動機(jī)制如何影響到小應(yīng)用程序的設(shè)計這一問題,獲得一般性的理解還是很重要的。一個小應(yīng)用程序類似于系列提供中斷服務(wù)的子程序的集合。程序就是這樣運(yùn)行的。在事件發(fā)生之前,小應(yīng)用程序一直處于等待狀態(tài)中。一旦事件發(fā)生,小應(yīng)用程序就會采取相應(yīng)措施并迅速將控制權(quán)交給awt。這一點是很關(guān)鍵的。在大部分時間里,小應(yīng)用程序都不會進(jìn)入操作運(yùn)行模式而長久地保持控制權(quán)。相反的,它必須針對特定的事件作出相應(yīng)的動作并把控制交給awt的運(yùn)行環(huán)境。在有些情況下,小應(yīng)用程序需要獨立完成一些重復(fù)的作業(yè)(例如,在窗口中顯示滾動信息),這時,必須再啟動一個額外的線程。 其次,用戶可以與小應(yīng)用程序進(jìn)行交互,而不是通過其他方式。我們

7、都知道,在一個非窗口界面的程序中,當(dāng)程序需要輸入時,它會提示用戶并調(diào)用一定的輸入方法,例如readline()。而在小應(yīng)用程序中,并不是這樣運(yùn)作的。相反,用戶可以按照自己的喜好隨意地與小應(yīng)用程序進(jìn)行交互。這些交互被送至小應(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í)行進(jìn)行控制的基本機(jī)制。這套方法中的四個:init()、start()、stop()

8、和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()

9、。整個過程見教材p224頁圖9-1所示。 2applet的初始化與終止的初始化與終止init():這是被調(diào)用的第一個方法。是初始化變量的地方。這個方法在小應(yīng)用程序運(yùn)行期間僅被調(diào)用一次。start():這是在init()之后被調(diào)用。它也在小應(yīng)用程序被終止后重新啟動時調(diào)用。注意:注意:init()僅在小應(yīng)用程序第一次被裝載時調(diào)用一次,而start()卻在每一次小應(yīng)用程序的html文檔被顯示在屏幕上時都被調(diào)用。因此,如果用戶離開一個網(wǎng)頁之后重新進(jìn)入時,小應(yīng)用程序就會從start()開始重新執(zhí)行。paint():在每一次小應(yīng)用程序的輸出必須重畫窗口時,paint()方法都被調(diào)用。paint()方法也在

10、小應(yīng)用程序開始執(zhí)行時被調(diào)用。paint()方法有一個graphics 類型的參數(shù)。這個參數(shù)包含了圖像上下文,描述了小應(yīng)用程序所運(yùn)行的環(huán)境。在需要對小應(yīng)用程序進(jìn)行輸出時,這個上下文將被用到。stop():當(dāng)web瀏覽器離開包含小應(yīng)用程序的html文件時,stop()方法就被調(diào)用,如在瀏覽器中去另一個頁面時。當(dāng)stop()被調(diào)用時,小應(yīng)用程序很可能在運(yùn)行。應(yīng)該使用stop()來掛起一些在小應(yīng)用程序不可見時不需要運(yùn)行的線程。當(dāng)用戶回到此頁面時,就能重新啟動它們。destroy():當(dāng)環(huán)境決定了小應(yīng)用程序需要完全從內(nèi)存中移去時,destroy()方法被調(diào)用。在這時候,應(yīng)該釋放任何小應(yīng)用程序可能用到的資

11、源。stop()方法總是在destroy()之前被調(diào)用?,F(xiàn)在讓我們更仔細(xì)地討論一下上述方法現(xiàn)在讓我們更仔細(xì)地討論一下上述方法 在某些情況下,小應(yīng)用程序可能需要覆蓋另外一個awt所定義的方法,即update()。這個方法在小應(yīng)用程序要求窗口的一部分被重畫時被調(diào)用。默認(rèn)的update()的方法是先用默認(rèn)的背景顏色填充小應(yīng)用程序窗口,再調(diào)用paint()方法。如果在填充背景時用的顏色與paint()方法中使用的不同,那么在每次update()被調(diào)用時,也就是只要窗口被重畫時,用戶將會感覺到默認(rèn)背景的閃動。避免這個問題的一種方法是重載update()方法,從而使它完成所有必要的顯示功能。然后,使pai

12、nt()簡單地調(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 3重載重載update()update()方法方法return9.2 applet中的文件操作中的文件操作 本節(jié)介紹applet中與文件操作、字體屬性相關(guān)的一些問題。 return9.2.1 9.2.1 圖形文件的讀入圖形文件的讀入9.2.2 9.2.2 聲音文件的讀入聲音

13、文件的讀入 9.2.3 applet9.2.3 applet 在java中,我們可以直接載入并輸出圖形文件格式。所支持的文件格式有兩種,分別為.gif和.jpg格式(不支持.bmp文件格式)。只要能夠給定圖形文件的位置和文件名,就可以通過getimage()這個方法載入所需要的圖形。 在這里所說的位置,是指圖形文件所在的url位置。也就是說,讀者不僅可以在java程序中使用存放在自己硬盤上的圖形文件,還可以通過url指定的方式,直接讀取網(wǎng)絡(luò)資源上的圖形文件,而且使用的方式非常簡單。當(dāng)然,applet運(yùn)行的時候,要保證網(wǎng)絡(luò)暢通,這樣才能顯示出該圖形。 getimage()方法主要出現(xiàn)在兩個類里,

14、第一個是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 9.2.1

15、圖形文件的讀入圖形文件的讀入return9.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(getcodebas

16、e(),“audio/welcome.au”);它的url的使用方法同前面讀入圖像時所使用的方法是一樣的。return9.2.3 applet 9.2.3 applet 從前面的介紹中我們已經(jīng)知道,graphics類的方法drawstring()可以在屏幕的指定位置顯示一個字符串,而java中還有一個類font,使用它可以獲得更加豐富多采和逼真精確的字體效果。 一個font類的對象表示了一種字體的顯示效果,包括字體類型、字型和字號。可用下面的語句創(chuàng)建一個font類的對象。 font myfont=new font(楷體楷體, font.bold, 14); 其含義是創(chuàng)建一個名為myfont的f

17、ont類:設(shè)置字體大小為14磅,類型為楷體,加粗型。 另外的兩種是font.plain(正常)、font.italic(斜體)。 該類定義完后,就可用g.setfont(myfont)方法設(shè)置了。以后在沒有設(shè)置新的字體之前,都將會用這個已經(jīng)設(shè)置好了的字體顯示字體。 分析教材p227228頁的例子。return9.3 9.3 使用使用appletapplet訪問數(shù)據(jù)庫訪問數(shù)據(jù)庫 本節(jié)以access數(shù)據(jù)庫為例簡要說明一下如何實現(xiàn)數(shù)據(jù)庫的相關(guān)操作。首先使用microsoft access創(chuàng)建一個數(shù)據(jù)庫,具體內(nèi)容讀者可自行定義。 為了運(yùn)行這個小應(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論