《Java語言程序設(shè)計案例教程》課件第8章_第1頁
《Java語言程序設(shè)計案例教程》課件第8章_第2頁
《Java語言程序設(shè)計案例教程》課件第8章_第3頁
《Java語言程序設(shè)計案例教程》課件第8章_第4頁
《Java語言程序設(shè)計案例教程》課件第8章_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章Apple程序8.1Apple程序的基本概念8.2在Apple程序中繪圖8.3Apple多媒體程序的設(shè)計第8章Applet程序?qū)W習(xí)目標

理解Applet程序的概念;

掌握Applet程序的編寫方法;

了解Applet程序的生命周期;

學(xué)會在Applet程序中繪制圖形和設(shè)置字體;

了解Applet多媒體程序的設(shè)計。

Java技術(shù)之所以如此熱門,其根本原因在于Java具有“讓Internet動起來”的能力。具體來說,就是Java能創(chuàng)建一種被稱做“小應(yīng)用程序”(Applet)的特殊類型程序,使具備運行Java程序的Web瀏覽器可以從網(wǎng)絡(luò)上下載這種程序,然后在瀏覽器窗口中運行。盡管,目前的Java與其剛剛問世的時候相比有多種技術(shù)可以實現(xiàn)動態(tài)網(wǎng)頁技術(shù),但由于小應(yīng)用程序是一種全功能的程序,因此它仍然具有應(yīng)用前景?;炯寄?.1Applet程序的基本概念前面各章介紹的程序都是在單機上可以單獨運行的Java程序,這種程序叫Java應(yīng)用程序(Aapplication)。JavaApplet程序是一種在網(wǎng)絡(luò)環(huán)境下,嵌入網(wǎng)頁執(zhí)行的Java程序。本節(jié)介紹有關(guān)Applet程序的設(shè)計知識。8.1.1Applet程序

Applet程序也叫“Java小應(yīng)用程序”,它是一種能夠嵌入到一個HTML頁面中,并且可以由支持Java的Web瀏覽器來解釋執(zhí)行的一種Java類。Applet程序的工作過程可以用圖8-1表示。圖8-1Applet程序的工作過程當瀏覽器打開一個含有Applet程序的Web頁面時,Applet程序就被從Web服務(wù)器下載到瀏覽器中,瀏覽器讀取到Applet程序的字節(jié)代碼文件后,自動啟動Java解釋器將字節(jié)代碼轉(zhuǎn)化為本地機器指令,并在瀏覽器窗口中運行,運行結(jié)果將顯示在瀏覽器窗口中。讀者要注意的是,IE6等版本的瀏覽器在沒有安裝Java之前,不能運行網(wǎng)頁中所嵌入的Applet程序,只要安裝JavaJDK時選擇安裝運行Java程序的解釋器插件(JavaPlug-in),就可以解決該問題。由于Applet在Web瀏覽器環(huán)境中運行,因此它并不直接由鍵盤輸入的一個命令來啟動。使用Applet時,必須創(chuàng)建一個HTML文件,將Applet字節(jié)代碼文件嵌入HTML文件中,用來告訴瀏覽器需裝載哪個Applet字節(jié)代碼文件。在HTML網(wǎng)頁中嵌入Applet字節(jié)代碼的標記是:<APPLETCODE="applet字節(jié)代碼文件名.class"WIDTH="窗口寬度"HEIGHT="窗口高度"></APPLET>其中,WIDTH和HEIGHT分別表示Applet程序在瀏覽器中所顯示窗口的寬度和高度。一個Applet程序在瀏覽器中的執(zhí)行步驟是:●瀏覽器裝入URL;●瀏覽器下載HTML文檔;●瀏覽器裝入Applet類;●啟動JVM運行Applet。8.1.2Applet程序的結(jié)構(gòu)與生命周期

1.?Applet程序的結(jié)構(gòu)由于Applet程序是嵌入網(wǎng)頁中被執(zhí)行的特殊Java程序,因此Applet程序的結(jié)構(gòu)與Application程序的結(jié)構(gòu)有較大的不同。根據(jù)人們?yōu)g覽網(wǎng)頁的特點,Java語言的設(shè)計者已經(jīng)為Applet程序設(shè)計好了程序結(jié)構(gòu),并將其放到了一個名叫“Applet”的類中,Applet類在“java.applet”包中。因此,要創(chuàng)建一個Applet程序,必須繼承Applet類,一般的創(chuàng)建格式如下:importjava.applet.Applet;publicclassHelloWorldextendsApplet{…}

Applet程序類必須為公共的(public),且它的程序文件名稱必須與類名一致。如類名為“HelloApplet”時,源程序的文件名則必須為“HelloApplet.java”。

2.?Applet類的主要方法與Applet的生命周期

Applet類提供了使Applet程序在瀏覽器上執(zhí)行的骨干結(jié)構(gòu),主要由init、start、stop和destroy這四個方法所構(gòu)成。利用Applet類提供的這些方法可以構(gòu)造任意的Applet程序。在實際應(yīng)用中,用戶可以通過重寫這些方法來構(gòu)造自己的Applet程序,根據(jù)需要可以重寫這四個方法中的個別方法,或全部重寫。

Applet的生命周期有四個狀態(tài):初始狀態(tài)、啟動狀態(tài)、停止狀態(tài)和消亡狀態(tài),這四種狀態(tài)分別與init、start、stop和destroy這四個方法的執(zhí)行對應(yīng),如圖8-2所示。另外,如果要在Applet程序中顯示字符串或繪圖,則還要使用Applet的paint方法。圖8-2Applet程序的生命周期

1)?init方法當小應(yīng)用程序第一次被支持Java的瀏覽器加載時,在瀏覽器中運行Java時系統(tǒng)會自動創(chuàng)建該Applet程序類的一個實例,并調(diào)用該實例的init方法。在小應(yīng)用程序的生命周期中,該方法只執(zhí)行一次,因此可以在其中進行一些只執(zhí)行一次的初始化操作,如初始化變量、加載圖像和聲音文件等。

2)?start方法系統(tǒng)在執(zhí)行完init方法之后,將自動調(diào)用start方法。另外,每當瀏覽器從圖標恢復(fù)為窗口時,或者用戶離開包含該小應(yīng)用程序的主頁后又返回該頁面時,系統(tǒng)都會再執(zhí)行一遍start方法。start方法在小應(yīng)用程序的生命周期中可能被調(diào)用多次,以啟動小應(yīng)用程序的執(zhí)行,這一點與init方法不同。該方法是小應(yīng)用程序的主體,在其中可以執(zhí)行一些需要重復(fù)執(zhí)行的任務(wù),例如開始播放動畫或聲音等。

3)?paint方法在start()方法執(zhí)行后,就會自動執(zhí)行paint方法;或者在將覆蓋Applet程序窗口的其他窗口移開時(即窗口需要重繪),paint方法也會被自動調(diào)用。在Applet程序中要顯示一些信息或進行圖形繪制時,這些操作通常放在paint方法中。

4)?stop方法與start()方法相反,當用戶離開小應(yīng)用程序所在頁面或瀏覽器變成圖標時,會自動調(diào)用stop()方法。因此,該方法在小應(yīng)用程序的生命周期中也被多次調(diào)用。這樣使得在用戶并不注意小應(yīng)用程序的時候,停止一些耗用系統(tǒng)資源的工作,以免影響系統(tǒng)的運行速度。如果一個小應(yīng)用程序中不包含動畫、聲音等程序,通常不必重寫該方法。

5)?destroy方法瀏覽器正常關(guān)閉時,Java自動調(diào)用destroy方法。destroy方法用于釋放系統(tǒng)資源。如果這個小應(yīng)用程序仍然處于活動狀態(tài),則Java會在調(diào)用destroy方法之前先調(diào)用stop方法。8.1.3一個簡單的JavaApplet程序下面通過一個簡單的Applet程序來了解Applet程序的執(zhí)行過程。該程序在瀏覽器上顯示“Hello,Applet!”的字樣。程序代碼如下:01//實例8-1:一個簡單的Applet程序(HelloApplet.java)02importjava.awt.Graphics;

//引入圖形類Graphics03importjava.applet.Applet;//引入Applet類04publicclassHelloAppletextendsApplet{05Strings;06publicvoidinit(){//init()方法是Applet首先執(zhí)行的方法07s="Hello,Applet!";//將s初始化08}09publicvoidpaint(Graphicsg){10g.drawString(s,70,80);//在坐標為(70,80)的地方顯示字符串s11}12}該程序的02行引入09行定義的paint方法參數(shù)中要使用的Graphics類,該類在java.awt包中。03行引入Applet類,07行在方法init中將字符串s進行了初始化,09行重寫了paint方法,10行調(diào)用圖形類Graphics的drawString方法在指定位置輸出字符串s。在網(wǎng)頁中嵌入該Applet的方法是:

(1)將該Applet程序編譯成字節(jié)代碼文件。

Applet程序編寫完成后,用Java編譯器(javac.exe程序)將其編譯成擴展名為.class的字節(jié)代碼文件。

(2)在HTML文件中嵌入Applet字節(jié)代碼。編譯好的Applet程序字節(jié)代碼文件要嵌入HTML文件中才能被執(zhí)行。將該例中Applet程序嵌入HTML文件HelloAppletd.html中的代碼如下:<HTML><APPLETCODE="HelloApplet.class"WIDTH=200HEIGHT=100></APPLET></HTML>

(3)在瀏覽器上執(zhí)行HTML文件。在資源管理器中雙擊“HelloAppletd.html”文件,即可在瀏覽器上看到Applet程序的執(zhí)行結(jié)果。另外,為了方便調(diào)試程序,JDK中還提供了一個工具程序appletviewer.exe,該程序?qū)iT用來調(diào)試與執(zhí)行Applet程序。其應(yīng)用格式如下:appletviewer文件名.html其實,要快速調(diào)試Applet程序還有一種方法,就是將上述HTML文件以注釋的形式加到Applet源程序的開始處。其格式如下://<HTML>//<APPLETCODE="HelloApplet.class"WIDTH=200HEIGHT=100>//</APPLET>//</HTML>importjava.awt.Graphics;

//引入圖形類Graphics…然后在DOS狀態(tài)下,用如下的命令執(zhí)行即可:appletviewerHelloApplet.java這種方法可以不用單獨編寫一個HTML文件去調(diào)試Applet程序。最后要說明一點,用戶在程序中并沒有創(chuàng)建一個上例中HelloApplet類的實例,那么該程序是如何被執(zhí)行的呢?其實,在瀏覽器載入Applet程序時,就自動創(chuàng)建了一個該Applet的實例,瀏覽器運行Java時,系統(tǒng)就會根據(jù)前面介紹的Applet的生命周期,自動調(diào)用相應(yīng)的方法。paint方法有個Graphics類型的參數(shù),該方法在被系統(tǒng)自動調(diào)用時,也會由系統(tǒng)自動生成一個Graphics類型的實例作為該方法的實參,該實例就代表Applet程序在瀏覽器上的窗口。8.1.4【相關(guān)知識】Applet程序與Application程序的比較

Applet程序與Application程序的比較如表8-1所示。表8-1Applet程序與Application程序的比較有時需要實現(xiàn)這樣一個Java程序文件,它既可作為應(yīng)用程序運行,又可作為小應(yīng)用程序運行。我們可以設(shè)計一個程序,使其具有Applet程序與Application程序的雙重身份。設(shè)計思想是創(chuàng)建一個小應(yīng)用程序,而這個小應(yīng)用程序包含一個main方法,如實例8-2所示。01//實例8-2:具有雙重身份的Applet程序(AppletApp.java)02//<HTML>03//<APPLETCODE="AppletApp.class"WIDTH="200"HEIGHT="100">04//</APPLET>05//</HTML>06importjava.applet.Applet;07importjava.awt.Graphics;08publicclassAppletAppextendsApplet{09staticStrings1=newString(“這是Application程序運行的結(jié)果!");10staticStrings2=newString(“這是Applet程序運行的結(jié)果!");11publicstaticvoidmain(Stringargs[]){12System.out.println(s1);13}//main函數(shù)結(jié)束14publicvoidpaint(Graphicsg){15g.drawString(s2,25,25);16}17}實例的第11~13行是Java應(yīng)用程序的main()函數(shù),在main()函數(shù)中輸出了該類定義的靜態(tài)字符串s1。第14~16行重寫了paint方法,該方法的15行在瀏覽器窗口中輸出該類定義的靜態(tài)字符串s2。該實例的運行結(jié)果如圖8-3所示。其中,8-3(a)圖是以Application方式運行的結(jié)果,8-3(b)圖是以Applet方式運行的結(jié)果。圖8-3實例8-2運行的結(jié)果(a)(b)8.2在Applet程序中繪圖在Applet程序中可以繪制一些簡單的圖形。本節(jié)介紹一些在程序中繪圖的基本知識和與圖形繪制有關(guān)的Graphics類的用法。8.2.1與繪圖有關(guān)的類

1.屏幕坐標圖8-4屏幕坐標在計算機顯示器上繪圖時,首先要確定圖形在平面坐標系中的位置。與傳統(tǒng)的坐標系有所不同,一般在程序設(shè)計中將顯示器的左上角定義為坐標原點,且在這個坐標系中所有可見的區(qū)域內(nèi),坐標都是正數(shù),如圖8-4所示。在Java程序中,每個點用一對整型數(shù)據(jù)表示,如圖8-4所示的點P(x,y)。屏幕左上角的坐標原點為(0,0),x軸的方向向右,y軸的方向向下。坐標的單位是像素。圖8-4屏幕坐標

2.?Graphics類

Graphics類是Java類庫中提供的一個用于圖形繪制的類。在屏幕上繪圖就要使用Java的圖形環(huán)境,Graphics類的對象就是專門用來管理圖形環(huán)境的,并提供了各種圖形繪制的方法。由于Java語言是一種跨平臺的語言,在各種不同的平臺上運行的Java程序其繪圖環(huán)境差別很大,因此無法定義一個具體的繪圖類。正因為如此,Graphics類被定義成了一個抽象類,該抽象類中主要定義了一些繪制圖形(如畫線、矩形、圓等)的方法,這些方法給程序員提供了一個統(tǒng)一的與平臺無關(guān)的繪圖接口。而這些方法則由不同平臺上的Java運行時環(huán)境來實現(xiàn)。在需要繪圖時,Java運行時環(huán)境會創(chuàng)建一個Graphics類的子類的實例來實現(xiàn)繪圖功能,而用戶不需要關(guān)心這個過程。若要在Applet程序中使用Graphics類進行圖形繪制,則可以使用Applet類提供的getGraphics()方法取得一個繪圖類對象。但要注意,由于Graphics類是一個抽象類,因此不能在程序中直接創(chuàng)建該類的對象。

Graphics類中定義的圖形繪制方法,主要可以繪制如下幾種圖形:●繪制直線;●繪制矩形;●繪制橢圓;●繪制圓??;●繪制多邊形。

1)繪制直線——drawLine繪制直線的方法為:publicabstractvoiddrawLine(intx1,inty1,intx2,inty2);該方法在圖形坐標系統(tǒng)中,使用當前顏色在點(x1,y1)和點(x2,y2)之間畫一條線,如圖8-5(a)所示。

2)繪制矩形——drawRect繪制矩形的方法為:publicvoiddrawRect(intx,inty,intwidth,intheight);該方法繪制指定矩形的邊框,矩形的左邊和右邊位置分別是x和x+width,頂邊和底邊位置分別是y和y+height,如圖8-5(b)所示(圖中width用w表示,height用h表示)。如果要用當前顏色填充指定的矩形,則要使用fillRect方法,該方法與drawRect方法的參數(shù)相同。該矩形左邊和右邊位置分別是x和x+width-1,邊和底邊位置分別是y和y+height-1,得到的矩形覆蓋區(qū)域?qū)挾葹閣idth個像素,高度為height個像素。

3)繪制圓角矩形——drawRoundRect繪制圓角矩形的方法為:publicabstractvoiddrawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight);圓角矩形的左邊和右邊位置分別是x和x+width,頂邊和底邊位置分別是y和y+height,arcWidth表示4個角弧度的水平直徑,arcHeight表示4個角弧度的垂直直徑,如圖8-5(c)所示(圖中aw表示arcWidth,ah表示arcHeight)。

4)繪制橢圓——drawOval繪制橢圓的方法為:publicabstractvoiddrawOval(intx,inty,intwidth,intheight);該方法可以繪制一個圓或橢圓,它恰好位于由x、y、width和height參數(shù)指定的矩形內(nèi),如圖8-5(d)所示。如果要用當前顏色填充指定的橢圓,則要使用fillOval方法,該方法與drawOval方法的參數(shù)相同。

5)繪制圓弧——drawArc繪制圓弧的方法為:publicabstractvoiddrawArc(intx,inty,int,int,intstartAngle,intarcAngle);該方法繪制由startAngle角度開始,到arcAngle角度為止的一個弧線。該弧線的外切矩形左上角坐標是(x,y),寬和高分別為width和height,0角度位于水平方向,角度為正值表示逆時針旋轉(zhuǎn),為負值表示順時針旋轉(zhuǎn),如圖8-5(e)所示??梢允褂胒illArc方法繪制一個實心扇形區(qū)域。

6)繪制多邊形——drawPolygon繪制多邊形的方法為:publicabstractvoiddrawPolygon(int[]xPoints,int[]yPoints,intnPoints);該方法繪制一個由x和y坐標數(shù)組定義的閉合多邊形,每對(x,y)坐標定義了一個點,如圖8-5(f)所示??梢允褂胒illPolygon方法繪制一個實心多邊形。圖8-5Graphics類中繪圖方法示意圖

3.?Color類在繪制各種圖形時,為了使色彩豐富,可以使用Java類庫中java.awt包里定義的Color類。該類中主要定義了一些顏色常量和與顏色操作有關(guān)的一些方法。常用的一些顏色常量為:staticColorBLACK:黑色staticColorBLUE:藍色staticColorCYAN:青色staticColorDARK_GRAY:深灰色staticColorGRAY:灰色staticColorGREEN:綠色staticColorLIGHT_GRAY:淺灰色staticColorORANGE:桔黃色staticColorPINK:粉紅色staticColorRED:紅色staticColorWHITE:白色staticColorYELLOW:黃色Color類提供的主要構(gòu)造方法是:Color(intr,intg,intb)表示用指定的紅色、綠色和藍色值(在0~255范圍內(nèi))創(chuàng)建一種不透明的顏色對象,例如:Colorc=newColor(255,0,0);創(chuàng)建了一種紅色對象??梢允褂肎raphics類的setColor方法設(shè)置當前的繪圖顏色;可以使用Graphics類的getColor方法取得當前的繪圖顏色。

4.?Font類通過Font類可以設(shè)置組件或所畫對象的字體,F(xiàn)ont類在java.awt包中。創(chuàng)建Font類對象的語法為:FontmyFont=Font(name,style,size);字體名name為字符串類型,可選擇ScanSerif、Serif、Monospaced、Dialog或DialogInput等。字型style為整型數(shù),為方便起見,可選擇Font類中定義的表示字型的常量,如Font.PLAIN(普通)、Font.BOLD(黑體)、Font.ITALIC(斜體)等,字型可以組合使用。字體大小用整型量size表示。例如:FontmyFont=newFont("SansSerif",Font.BOLD,16);FontmyFont=newFont("Serif",Font.BOLD+Font.ITALIC,12);可以使用Graphics類的setFont方法設(shè)置當前繪圖區(qū)中的字體;可以使用Graphics類的getFont方法取得當前的字體。限于篇幅,以上對Graphics、Color和Font類只進行了簡單的介紹,在使用過程中,讀者一定要多查看JDK幫助文檔。查看JDK幫助文檔的主要目的是便于了解類中定義了哪些屬性和方法,如何構(gòu)造該類的一個實例。當讀者有了一定的基礎(chǔ)知識后再進行Java程序設(shè)計時,主要應(yīng)依靠JDK幫助文檔。8.2.2【案例8-1】畫一個“雪人”

1.案例描述設(shè)計一個Applet程序,畫一個卡通“雪人”。

2.案例效果案例8-1的執(zhí)行效果如圖8-6所示。圖8-6案例8-1的執(zhí)行效果

3.技術(shù)分析要在Applet程序中進行繪圖,則有關(guān)繪圖的方法只能在paint方法中調(diào)用。在調(diào)用paint方法時,以當前Applet在瀏覽器中的窗口為繪圖對象,可以使用該繪圖對象的各種方法畫出如圖8-6所示的卡通人物。畫面顏色的設(shè)計要使用Color類,設(shè)置繪圖對象的顏色時可以使用setColor方法。

Applet中字體的顯示要使用Font類,設(shè)置字體時可以使用setFont方法。

4.程序解析下面是案例8-1的程序代碼:01//******************************************02//案例:8-103//程序名:Snowman.java04//功能:畫雪人05//******************************************0607importjava.applet.*;08importjava.awt.*;09publicclassSnowmanextendsApplet{10 11 publicvoidpaint(Graphicsg){12 finalintMID=150;13 finalintTOP=50;14 FontmyFont=newFont("華文彩云",Font.BOLD+Font.ITALIC,18);15 16 //設(shè)置Applet窗口的背景色17 setBackground(Color.CYAN);18 19 g.setFont(myFont);20 g.drawString("這是我堆的雪人!",80,20);2122 //用藍色畫表示地面的矩形23 g.setColor(Color.BLUE);24 g.fillRect(0,175,300,100);25 26 //用紅色畫表示太陽的圓27 g.setColor(Color.RED);28 g.fillOval(-40,-40,80,90);29 30 //畫身軀31 g.setColor(Color.WHITE);32 g.fillOval(MID-20,TOP,40,40);//頭部33 g.fillOval(MID-35,TOP+35,70,50);//身軀中部34 g.fillOval(MID-50,TOP+80,100,60);//身軀下部35 36 //畫眼睛37 g.setColor(Color.BLUE);38 g.fillOval(MID-10,TOP+10,5,5);//左眼39 g.fillOval(MID+5,TOP+10,5,5);//右眼40 41 g.setColor(Color.BLACK);42 g.drawArc(MID-10,TOP+20,20,10,190,160);//嘴43 g.drawLine(MID-25,TOP+60,MID-50,TOP+40);

//左臂44 g.drawLine(MID+25,TOP+60,MID+55,TOP+40);

//右臂45 46 //帽子47 g.drawLine(MID-20,TOP+5,MID+20,TOP+5);48 g.fillRect(MID-15,TOP-20,30,25);49 }50}8.2.3【相關(guān)知識】使用Graphics2D類繪圖在Java1.2API中還提供了功能更強大的二維圖形處理能力。與二維圖形有關(guān)的類分布在Java的不同包中,大部分位于java.awt.geom包中。這些類可以完成任意寬度直線的繪制,還具有用漸變顏色和紋理來填充圖形的功能等。在前面介紹的實例中,繪圖時paint方法要傳入一個Graphics類型的參數(shù)g,然后在paint方法中通過調(diào)用g的各種方法來繪制圖形,因此,Graphics類型的對象g就成了一個“畫筆”。同樣,為了處理二維圖形,在Java1.2API中定義了一個新的Graphics2D類,Graphics2D類繼承了Graphics類。如果把Graphics2D類的對象作為一個“畫筆”來繪畫,則要有一個該類的對象。一般在paint方法中通過如下的強制類型轉(zhuǎn)換來取得一個Graphics2D類的對象:publicvoidpaint(Graphicsg){Graphics2Dg2d=(Graphics2D)g;…}在使用Graphics2D類繪圖時,把將要繪制的圖形作為一個對象來處理,因此,在繪制圖形之前先要創(chuàng)建一個所要繪制圖形的對象,這與Graphics類直接進行繪圖是不同的。對于創(chuàng)建好的繪圖對象,可以使用Graphics2D類的draw方法繪制在Applet窗口中,draw方法的參數(shù)為創(chuàng)建好的繪圖對象。常用的繪圖對象有:

1)直線對象要繪制一條直線,就要創(chuàng)建一個java.awt.geom包中Line2D類的對象。如果點的坐標是以雙精度數(shù)指定的,則要用Line2D.Double類創(chuàng)建該對象:Line2Dline=newLine2D.Double(12.2d,12.34d,100.3d,90.49d);表示創(chuàng)建一個從(12.2d,12.34d)點到(100.3d,90.49d)點的直線對象。

2)矩形對象要繪制一個矩形,就要創(chuàng)建一個java.awt.geom包中Rectangle2D類的對象。如果點的坐標是以雙精度數(shù)指定的,則要用Rectangle2D.Double類創(chuàng)建該對象:Rectangle2Drect=newRectangle2D.Double(12.2d,12.34d,100.3d,90.49d);表示創(chuàng)建一個左上角坐標為(12.2d,12.34d),寬為100.3d,高為90.49d的矩形對象。

3)橢圓對象創(chuàng)建一個橢圓對象時,要使用java.awt.geom包中的Ellipse2D.Double類:Ellipse2Drect=newEllipse2D.Double(12.2d,12.34d,100.3d,90.49d);表示創(chuàng)建一個橢圓對象,橢圓對象包含在左上角坐標為(12.2d,12.34d),寬為100.3d,高為90.49d的矩形中。

4)二次曲線對象如果要創(chuàng)建一個二次多項式y(tǒng)(x)=ax2+bx+c,就要使用java.awt.geom包中的QuadCurve2D.Double類:QuadCurve2Dcurve=newQuadCurve2D.Double(12,12,10,40,100,90);表示過(12,12)點和(100,90)點及控制點(10,40)創(chuàng)建一條二次曲線對象。

5)三次曲線對象如果要創(chuàng)建一個三次多項式y(tǒng)(x)=ax3+bx2+cx+d,就要使用java.awt.geom包中的CubicCurve2D.Double類:CubicCurve2Dcurve=newCubicCurve2D.Double(50,30,10,10,100,100,50,100);表示過(50,30)點和(50,100)點及控制點(10,10)和(100,100)創(chuàng)建一條三次曲線。下面是一個圖形類的應(yīng)用實例:01importjava.awt.*;02importjava.applet.*;03importjava.awt.geom.*;0405publicclassTest2DextendsApplet{06 publicvoidpaint(Graphicsg){Graphics2Dg2d=(Graphics2D)g;08 Line2Dline=newLine2D.Double(10,10,100,100);09 QuadCurve2Dcurve=newQuadCurve2D.Double(10,10,100,100,200,10);10 CubicCurve2Dcubic=newCubicCurve2D.Double(10,150,80,80,160,210,200,150);11 g2d.draw(line);12 line.setLine(100,100,200,10);13 g2d.draw(line);14 g2d.drawString("控制點(100,100)",65,115);15 g2d.draw(curve);16 g2d.draw(cubic);17 }18}該程序的運行結(jié)果如圖8-7所示。圖8-72D圖形繪制實例技能拓展8.3Applet多媒體程序的設(shè)計在Applet程序中還可以顯示圖像與播放音樂。本節(jié)將舉例說明設(shè)計Applet多媒體程序的方法。8.3.1在Applet程序中顯示圖像在Applet多媒體程序中,為了確定一個資源所在的位置(如一個圖片的位置等),要使用URL(即統(tǒng)一資源定位符,可在網(wǎng)絡(luò)中唯一標識一個資源的地址)。Java提供的.URL類描述了Internet中使用的URL。在Applet類中有兩個方法可以返回URL的值:●?getDocumentBase():返回一個描述當前瀏覽器中帶有Applet標記的HTML文件所屬頁面目錄的URL對象?!?getCodeBase():返回一個描述Applet類文件本身源目錄的URL對象。它通常與HTML文件目錄相同。得到一個URL對象后,可以將該URL位置處的資源通過Applet程序載入網(wǎng)頁,這樣就可以在一個網(wǎng)頁中顯示圖像和播放音樂了。在Applet程序中顯示一個圖像文件的主要過程是:

(1)用Applet類的getCodeBase()方法獲得圖像的地址(URL)。

(2)用Applet類的getImage()方法取得可以在屏幕上繪制的圖像(Image)對象。

(3)在paint()方法中用Graphics類的drawImage()方法顯示圖像。下面是一個將當前程序所在位置的bird.jpg圖像顯示出來的Applet程序:01//實例8-3:在Applet程序中顯示圖片(ImageDemo.java)02importjava.applet.*;03publicclassImageDemoextendsApplet{04Imageimg;05publicvoidinit(){06img=getImage(getCodeBase(),"bird.jpg");07}08publicvoidpaint(Graphicsg){09g.drawImage(img,20,20,this);10}11}程序的04行聲明了一個圖像類的變量img,用于存放將要顯示的圖像。06行在init方法中對img進行了初始化,即載入圖像。09行表示圖像在窗口的左上角位置是(20,20)。8.3.2在Applet程序中播放音樂在Applet程序中播放一個聲音文件的主要過程是:

(1)用Applet類的getAudioClip(URLbase,Stringtarget)方法裝入一段要播放的音樂。該方法的返回值是java.applet.AudioClip類型的一個實例,AudioClip類型是一個專門用于聲音播放的接口。例如:AudioClipsound=getAudioClip(getDocumentBase(),"bark.au");

(2)使用AudioClip接口中的play方法可以將已裝入的音樂播放一遍。例如:sound.play();

(3)使用AudioClip中的loop方法重復(fù)播放。例如:sound.loop();

(4)要停止一段正在播放的音樂,可用AudioClip中的stop方法。例如:sound.stop();下面是一個循環(huán)播放音樂的Applet程序?qū)嵗?1//實例8-4:在Applet中播放音樂(AudioTest.java)02importjava.awt.Graphics;03importjava.applet.*;04publicclassAudioTestextendsApplet{05AudioClipsound;06publicvoidinit(){07sound=getAudioClip(getDocumentBase(),"2.au");08}09publicvoidpaint(Graphicsg){10g.drawString("AudioTest",25,25);11}12publicvoidstart(){13sound.loop();14}15publicvoidstop(){16sound.stop();17}18}8.3.3【相關(guān)知識】向Applet程序傳遞參數(shù)如同JavaApplication可以使用命令行來接收用戶參數(shù)一樣,它也可以向Applet傳遞參數(shù)。不過在Applet中,這個任務(wù)要通過HTML文件來完成。本節(jié)舉例說明從HTML文件向Applet程序傳遞參數(shù)的方法。向Applet程序傳遞參數(shù)時,首先要在HTML文件中使用PARAM標記的name屬性設(shè)置參數(shù)的名稱(即變量名),并使用value屬性設(shè)置參數(shù)的值。然

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論