




已閱讀5頁,還剩50頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第四章JavaApplet及應用,4.4Applet應用,4.3Applet程序與HTML文件,4.2Applet與Applet類,4.1Applet概述,4.1Applet概述,1、JavaApplet的基本概念Java小應用程序(JavaApplet)是使用Java語言編寫的一段代碼,Applet是一種為通過Web瀏覽器在Internet上工作而設計的Java程序。它能夠在瀏覽器環境中運行。并由支持Java的Web瀏覽器來解釋執行。,2、一個Applet小程序的例子,importjava.applet.Applet;importjava.awt.Graphics;publicclassExam4_1extendsAppletStringstr;publicvoidinit()str=“HereisanApplet”;publicvoidpaint(Graphicsg)g.drawString(str,100,100);,4.1Applet概述,超文本標記語言(HTML)WWW瀏覽器Applet小程序嵌入在/寫入在HTML文件中從WWW服務器下載到本地WWW瀏覽器由WWW瀏覽器中的Java解釋器來運行,4.1Applet概述,5,實現過程Applet小程序編寫,編譯,得到字節碼文件javacExam4_1.java嵌入到HTML文件中,保存為Exam4_1.html,4.1Applet概述,3.Applet的主要作用:形成動態可交換式的網頁,并可利用瀏覽器中所提供的圖形功能顯示及處理圖像、處理用戶界面、網絡通訊、用戶事件處理、訪問后臺數據庫等功能。在Java出現之前,人們就已經開始使用HTML(超文本標記語言)進行Web頁面的設計了。然而,對HTML稍有了解的人都知道,HTML所提供的設計能力是極其有限的。Java率先提供了讓Web頁面實現更豐富的GUI和邏輯運算能力的方法,這種方法是通過將一個Java的類插入到Web頁面中來實現的。,4.1Applet概述,下載html文件,WWW服務器,WWW服務器,WWW服務器,html文件Applet嵌入Applet標記名,解釋執行Applet字節碼,請求html文件,下載Applet字節碼,請求Applet字節碼,4.Applet的工作原理,4.1Applet概述,Applet類繼承了Panel類,是一個容器,在Applet程序開發中多使用JApplet類,它是JavaSwing中的成員,繼承了Applet類,JApplet類的繼承關系如下圖所示。,4.2Applet與Applet類,1、Applet類層次,2、Applet生命周期,Applet的加載、執行、卸載不同于一般的Java應用程序,其內的主要成員方法分別對應于Applet生命周期的不同階段的活動,對于每個事件將自動調用一種方法。方法如下:,init()方法,start()方法,stop()方法,destroy()方法,4.2Applet與Applet類,Applet生命周期,4.2Applet與Applet類,(1)init()方法Applet程序的初始化階段會調用該方法,實現程序初始化。,1)執行時機:當Applet程序初始下載時瀏覽器首先執行它2)特點:只被調用一次。3)用途:用戶重定義出它,從而達到創建出其他對象、初始狀態設置、圖像加載及外觀特征參數的改變等。,3、Applet類中的主要成員方法,4.2Applet與Applet類,(2)start()方法1)執行時機:它是在Applet的init()函數調用之后被瀏覽器調用;用戶又切換回到本Applet頁面;瀏覽器從圖標狀態恢復為窗口時被調用。2)特點:可能被多次執行(而且都是在頁面可見時被調用)。3)用途:用戶重定義出它,在其內創建并啟動線程以實現特定的功能。,4.2Applet與Applet類,(3)stop()方法它與start()交替執行。1)執行時機:當用戶退出瀏覽器時被瀏覽器調用;當用戶離開Applet所在的頁面;瀏覽器變為圖標狀態時。2)特點:可能被多次執行(而且都是在頁面不可見時被調用)。3)用途:用戶重定義出它,在其內終止線程以終止特定的功能。,4.2Applet與Applet類,(4)paint(Graphicsg)方法它用于在瀏覽器的客戶區(GUI)中顯示出文本、圖像等。1)特點:可多次被調用,并且可由AWT的繪制處理線程自動調用(啟動后/窗口改變/repaint()調用)。2)用途:用戶重定義出它,以顯示出Applet面板區域內各個組件及外觀特征和顯示出文本、圖像、圖形等。3)定義的形式:publicvoidpaint(Graphicsg)/顯示出Applet面板區域內各組件外觀調用Graphics類中的各種成員函數來實現繪制輸出,用戶也可調用repaint()、update()來間接地調用paint()以實現立即顯示外觀屬性的改變。,4.2Applet與Applet類,(5)destroy()方法1)執行時機:它在Applet結束時被調用,以允許Applet做最后清理任務(離線時釋放本對象及其相關的資源)2)用途:由于stop()在destroy()之前被執行,用戶一般不必覆蓋它,而只需覆蓋stop()即可。,4.2Applet與Applet類,importjava.awt.*;importjava.applet.*;publicclassAppletClassNameextendsAppletpublicvoidinit()/初始化變量、裝載圖片、讀取參數值等publicvoidstart()/啟動線程執行或恢復線程執行publicvoidpaint(Graphicsg)/完成繪制輸出信息等操作publicvoidstop()/掛起正在執行的程序,暫停程序的執行publicvoiddestroy()/終止線程,釋放系統資源,3、Applet類的框架結構,4.2Applet與Applet類,publicclassSimpleAppletextendsAppletStringBufferbuffer;publicvoidinit()buffer=newStringBuffer();addItem(initializing.);publicvoidstart()addItem(starting.);publicvoidstop()addItem(stopping.);,publicvoiddestroy()addItem(preparingforunloading(destroy).);voidaddItem(StringnewWord)System.out.println(ewWord);buffer.append(newWord);repaint();publicvoidpaint(Graphicsg)g.drawRect(0,0,getSize().width-1,getSize().height-1);g.drawString(buffer.toString(),5,15);,4.2Applet與Applet類,除了Applet生命周期控制的方法外,Applet類還提供了一些其他有用的方法:,4、Applet類的其他有用的方法,publicAppletContextgetAppletContext()publicURLgetDocumentBase()publicURLgetCodeBase()publicStringgetParameter(Stringname)publicStringgetParameterInfo()/應該被重寫publicvoidshowStatus(Stringmsg),4.2Applet與Applet類,1.Html中的Applet標記,4.3Applet程序與HTML文件,超文本標記語言(HTML)和Html文件開始和結束的標記和WWW瀏覽器窗口標題內容的標記和Html文件在瀏覽器窗口中顯示內容的標記和嵌入到Html文件中Applet程序的標記,.alternateHTML,4.3Applet程序與HTML文件,CODEBASE=codebaseURL指明Applet類文件所在URL址,在Applet類中,方法getCodeBase()可以獲取該屬性。如果這個屬性沒有指明,那么Applet類文件必須與包含它的HTML頁面在同一個地方,方法getCodeBase()返回的值與getDocumentBase()相同。CODE=appletFile指明需要運行的Applet類文件(.class文件),該文件是與codebaseURL相關的。NAME=appletInstanceName給出了Applet類運行時的實例名,這使得同處于一個頁面的不同Applet之間能夠相互通信。方法getAppletContext()可以得到同一個方頁面中其它Applet類。,4.3Applet程序與HTML文件,ALT=alternateText如果瀏覽器支持Applet但不能運行它,就顯示alternateText中所給出的文字。否則就忽略它。WIDTH=pixelsHEIGHT=pixelsApplet在瀏覽器中所顯示的高度和寬度(以象素為單位)。ALIGN=alignmentApplet在瀏覽器中顯示時的對齊方式,其含義與效果與圖片在HTML中的一樣。其取值有:left,right,top,texttop,middle,absmiddle,baseline,bottom,absbottom。VSPACE=pixelsHSPACE=pixelsApplet在瀏覽器中顯示時上下、左右要預留的高度和寬度,其含義與效果與圖片在HTML中的一樣。,4.3Applet程序與HTML文件,屬性可以使得Applet能夠從頁面中獲取所需的參數。方法getParameter()獲取屬性指定的參數。屬性的作用與應用程序中main()方法里參數Stringargs的作用是一樣的。一個好的小應用程序,應該提供用戶能夠設置外部參數的功能,以使得用戶能夠根據自己的需要來應用它。方法getParameterInfo()可以得到有關屬性的說明信息。alternateHTML如果瀏覽器不支持Applet,就解釋alternateHTML所給出的HTML代碼。否則就忽略它。,4.3Applet程序與HTML文件,publicclassAppletParaextendsAppletStrings1,s2;publicvoidinit()s1=getParameter(p1);s2=getParameter(p2);publicvoidpaint(Graphicsg)g.drawString(s1,10,10);g.drawString(s2,10,30);,AppletParameterTest,4.3Applet程序與HTML文件,importjava.applet.Applet;importjava.awt.*;publicclassExam4_3extendsAppletStringstr;intx,y,h;Fontfnt;publicvoidinit()str=getParameter(“string”);h=Integer.parseInt(getParameter(“size”);x=Integer.parseInt(getParameter(“x1”);y=Integer.parseInt(getParameter(“y1”);fnt=newFont(“TimesRoman”,Font.BOLD,h);publicvoidpaint(Graphicsg)g.setColor(Color.red);g.setFont(fnt);g.drawString(str,x,y);,4.3Applet程序與HTML文件,4.3Applet程序與HTML文件,Applet程序中可使用java.awt包中的Graphics類提供的各種方法,在Applet程序中輸出文本、繪制多種圖形和顯示圖片等。Graphics類對象代表當前當前組件的繪圖環境。,4.4Applet應用,1、輸出文本,(1)繪制字符串publicvoiddrawString(Strings,intx,inty)(2)繪制字符publicvoiddrawString(charc,intoffset,intnumberintx,inty)(3)繪制字節publicvoiddrawString(byteb,intoffset,intnumberintx,inty),4.4Applet應用,(1)設置字體java.awt.Font類設置文本的字體(包括字型和字號)構造方法publicFont(Stringname,intstyleintsize),2、設置字體和顏色,編程方法:利用Font類創建出一Font類對象并設置字體特性參數;調用Graphics類中的setFont()將用戶字體加入到系統中;再調用繪制函數輸出文字。,4.4Applet應用,publicvoidpaint(Graphicsg)FontmyFont=newFont(“Dialog”,Font.BOLD,20);g.setFont(myFont);g.drawString(“這是Java中的Dialog字體的文字串”,100,100);,(2)設置字體的尺寸:java.awt.FontMetrics類;獲知字符或字符串的寬度和高度。獲取文字字體的尺寸方法:FontMetricsfm=g.getFontMetrics();fm.getHeight();,4.4Applet應用,(3)設置顏色可用java.awt.Color類類設置或獲取某一容器組件內的圖形、文字的顏色。Color類已包含13個顏色常量常用構造方法publicColor(intr,intg,intb)publicColor(floatr1,floatg1,floatb1),2、設置字體和顏色,編程方法:利用Color類創建出一Color類對象并設置顏色特性參數(三基色的分量);調用Graphics類中的setColor()將用戶的顏色加入到系統中;再調用繪制函數輸出圖形、文字等。,4.4Applet應用,publicvoidpaint(Graphicsg)ColormyColor=newColor(red,green,blue);g.setColor(myColor);g.drawString(“這是Java中的帶顏色的文字串,100,100);,要點:對Java的組件也可借助于以下函數來改變或獲取組件的前景和背景色。setBackground()/setForeground()(設置前景和背景色)getBackground()/getForeground()(獲取前景和背景色),importjava.applet.Applet;importjava.awt.*;publicclassExam4_4extendsAppletpublicvoidpaint(Graphicsg)Fontfont1,font2,font3;font1=newFont(“Serif”,Font.BOLD,20);font2=newFont(“Monospaced”,Font.BOLD+Font.ITALIC,24);font3=newFont(“SansSerif”,Font.PLAIN,16);g.setFont(font1);g.drawString(“Serif20pointBOLD”,30,20);g.setFont(font2);g.drawString(“Monospaced24pointBOLD+ITALIC”,30,80);g.setFont(font3);g.drawString(“SansSerif16pointPLAIN”,30,50);intsize=font2.getSize();intstyle=font1.getStyle();Stringname=font2.getName();Stringstr=name+“+style+“+size;g.drawString(str,30,110);,4.4Applet應用,importjava.applet.Applet;importjava.awt.*;publicclassExam4_6extendsAppletFontfont1=newFont(“TimesRoman”,Font.ITALIC,25);Fontfont2=newFont(“Braggadcoio”,Font.BOLD,40);publicvoidpaint(Graphicsg)Stringstr=“IloveBeijing!”;Colormycolor=newColor(192,64,200);g.setFont(font1);g.setColor(mycolor);g.drawString(str,30,40);Colordarker=mycolor.darker();g.setColor(darker);g.drawString(str,50,80);Colorbrighter=mycolor.brighter();g.setColor(brighter);g.drawString(str,70,120);g.setFont(font2);g.setColor(Color.red);g.drawString(str,30,170);g.setColor(Color.white);g.drawString(str,32,169);,4.4Applet應用,4.4Applet應用,3、繪制幾何圖形,畫直線voiddrawLine(intx1,inty1,intx2,inty2)畫矩形voiddrawRect(intx,inty,intwidth,intheight)voidfillRect(intx,inty,intwidth,intheight)voidclearRect(intx,inty,intwidth,intheight)voiddrawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)voiddraw3DRect(intx,inty,intwidth,intheight,booleanb)voidfill3DRect(intx,inty,intwidth,intheight,booleanb),4.4Applet應用,3、繪制幾何圖形,畫圓弧和橢圓voiddrawArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)voidfillArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)voiddrawOval(intx,inty,intwidth,intheight)voidfillOval(intx,inty,intwidth,intheight),importjava.applet.Applet;importjava.awt.*;publicclassExam4_8extendsAppletpublicvoidpaint(Graphicsg)intx0=10,y0=20,X=150,Y=80,L,c;intarc=0,N=10;doublexy=1.0*(X-Y)/N/2;g.setColor(Color.red);g.fillRect(x0,y0,X,X);for(inti=0;i=N;i+)L=(int)(X-2*i*xy);arc=Y*i/N;c=i*240/N;g.setColor(newColor(c,c,c);g.drawRoundRect(int)(x0+i*xy),(int)(y0+i*xy),L,L,arc,arc);g.setColor(Color.blue);g.draw3DRect(200,y0,X,X,true);g.setColor(Color.green);g.fill3DRect(400,y0,Y,Y,false);,4.4Applet應用,畫多邊形publicvoiddrawPolygon(intxPoints,intyPoints,intPoints)publicvoidfillPolygon(intxPoints,intyPoints,intPoints)publicvoiddrawPolygon(Polygonp)publicvoidfillPolygon(Polygonp)Polygon類構造方法Polygon()Polygon(intxPoints,intyPoints,intnumberOfPoints),4.4Applet應用,(1)加載圖像(定義獲取圖像對象)java.awt包java.awt.Image類1)JavaApplet中加載圖像:直接調用:getImage(URLurl,Stringname),4.4Applet應用,3、顯示圖像,url:給出圖片文件基本位置的絕對URL路徑,name:圖片文件名稱,它相對于url參數的圖片位置。,當前網頁文件的URL路徑,例如:ImagemyImage;myImage=getImage(getDocumentBase(),edonkey.jpg”);,4.4Applet應用,tryURLurl=newURL(,例如使用網站URL路徑“,注意:Applet程序和將要獲取的資源文件(例如圖片和音頻文件等)必須存放在同一個服務器中,由于Applet程序的安全限制,它不能夠訪問其他服務器上的文件。,4.4Applet應用,2)JavaApplication中加載圖像:ImagemyImage=Toolkit.getDefaultToolkit.getImage(imageFileName);加載圖像。,(2)顯示圖像的操作drawImage(Imageimg,intx,inty,ImageObserverobserver)drawImage(Imageimg,intx,inty,intwidth,intheight,ImageObserverobserver),4.4Applet應用,其中第四個參數可以為null(不跟蹤圖像載入時)或this(跟蹤圖像載入時,跟蹤者為本程序)。,圖像編程的要點:先加載圖像(將它定義為Image類對象);再跟蹤圖像的加載過程;最后顯示出圖像,importjava.applet.Applet;importjava.awt.*;publicclassExam4_13extendsAppletpublicvoidpaint(Graphicsg)Imagepic;pic=getImage(getDocumentBase(),“edonkey.jpg”);intx0=10,y0=30;intw=pic.getWidth(this);inth=pic.getHeight(this);g.drawImage(pic,x0,y0,w/8,h/8,this);g.drawImage(pic,x0+150,y0,w/12,h/12,this);g.drawImage(pic,x0+150,y0+100,w/15,h/15,this);g.drawImage(pic,x0+250,y0+30,(int)(w*0.1),(int)(h*0.2),this);,4.4Applet應用,4.4Applet應用,4、動畫編程,(1)動畫原理:畫出一系列的圖像幀,利用人眼的視覺暫停來造成運動的感覺。(2)常見的動畫效果及實現原理(利用線程達到循環顯示輸出):1)運動效果:平動-改變文字在顯示時g.drawString()的x,y坐標位置或g.drawImage()中的x,y坐標位置;規則運動-如果x,y之間滿足一定的數學規則。2)變焦(由遠到近-文字由小到大;由近到遠-文字由大到小):利用線程不斷地改變文字的字體大小或圖像的大小。3)淡入淡出:利用線程不斷地改變文字的顏色并將顏色按某種規則變化。,4.4Applet應用,(3)動畫的質量:除了圖片本身的好壞外,動畫中動作的平滑程度也是一大關鍵(每秒所播放的圖像數較多,動畫中動作的平滑程度則較高,1020幀/秒);動畫的速度則可利用Java的線程來實現并用threadObj.sleep()來延遲以控制動畫的速度。(4)動畫的圖像載入編程技巧:利用getImage()函數并用Image數組來存放各個Image對象,同時為利用一個for()循環來將圖片全部載入,應而各個圖像文件名也應有要求(一般可采用數字編碼來命名文件名);注意只有在圖像文件全部加載完畢以后再顯示出,否則會斷續顯示,這可由MediaTracker類中的waitForAll()方法實現對圖像載入過程的跟蹤。(5)動畫的載體:文字或圖像,實例1:文字淡入淡出(1)原理:利用new創建一個線程,用drawString()在屏幕指定位置顯示出文字,然后讓線程休眠一段時間,再改變文字顯示的位置或顏色,最后再顯示文字(其中包括邊界判斷、重設坐標)。(2)編程技巧:可利用Graphics類中的clipRect()函數用于限定繪制范圍,從而減少清屏的區域以避免圖像閃爍。實例2:圖像動畫,4.4Applet應用,importjava.applet.Applet;importjava.awt.*;publicclassimg1extendsAppletImagem_Images;intsum=18;intcur=0;StringstrImage;publicvoidinit()m_Images=newImage18;for(inti=0;isum;i+)strImage=images/img00+(i10)?0:)+i+.gif;m_Imagesi=getImage(getDocumentBase(),strImage);publicvoidstart()cur=0;publicvoidpaint(Graphicsg)g.drawImage(m_Imagescur,50,50,this);cur=+cur%sum;tryThread.sleep(50);catch(InterruptedExceptione)showStatus(e.toString();repaint();,4.4Applet應用,4.4Applet應用,4、音頻播放,編程要點:先加載聲音文件,再播放它。編程方法:(1)在Applet程序中直接調用play()函數。play(getDocumentBase(),mySound.au”),但此方法的缺點是用戶無法控制它。,Java語言除了能夠處理圖片資源之外,還可以獲取并播放音頻、視頻等多媒體資源,和圖像處理一樣。支持的主要音頻格式有AIFF、AU、MIDI、WAV、RMF等。Applet對音頻資源也使用URL路徑定位,所以同樣需要捕獲和處理URL的異常。,4.4Applet應用,(2)使用AudioClip接口提供的相關API來實現音頻播放、停止和循環播放,AudioClip接口中定義了3個方法:,1)play()方法該方法將從頭開始重新播放指定的音頻剪輯。2)stop()方法該方法將停止當前正在播放的音頻剪輯。3)loop()方法該方法將循環播放指定的音頻剪輯。Applet類中提供了多個播放音頻資源的方法,它們都可以獲取AudioClip接口的實現,并調用該接口中定義的方法控制音頻的播放與停止。,4.4Applet應用,4)getAudioClip()方法該方法可以獲取URL參數指定的AudioClip對象,該對象是AudioClip接口的一個實現,當調用該對象的方法進行音頻播放時,音頻資源中的數據將被加載并播放。,該方法有兩種重載方式。(1)第一種重載格式:url:音頻資源的URL路徑參數。該方法根據url參數指定的路徑尋找音頻資源,并返回AudioClip對象。(2)第二種重載格式為:url:音頻資源的URL參考路徑。name:音頻文件名稱,它相對于url參數的音頻剪輯位置。,getAudioClip(URLurl),getAudioClip(URLurl,Stringname),play()方法,該方法可以播放指定絕對URL路徑的音頻剪輯。如果未找到音頻剪輯,則沒有任何效果。使用該方法只能播放音頻,因為它沒有返回AudioClip對象,所以無法實現停止音頻播放。該方法同樣有兩種重載方式。(1)第一種重載的語法格式為:url:該參數指定了音頻資源的URL絕對路徑。(2)第二種重載的語法格式為:url:該參數指定了音頻資源的URL絕對路徑。name:音頻文件名稱,它相對于url參數的音頻剪輯位置,play(URLurl),play(URLurl,S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 托育服務安全協議書
- 搞笑情侶合約協議書
- 洗滌用品銷售協議書
- 服務設備回收協議書
- 泔水廢水回收協議書
- 水果委托采購協議書
- 施工屬地管理協議書
- 消防設計改造協議書
- 搬遷轉讓房產協議書
- 無證駕駛諒解協議書
- 神經內科常見頭痛和抑郁焦慮培訓課件
- 普通遺傳學講稿
- (中職)化學分析技術項目七 測定鐵礦石的全鐵量教學課件
- 臨時支撐體系拆除審批表
- 錦程網生涯規劃書
- 2020 ACLS-PC-SA課前自我測試試題及答案
- (完整版)《安全標志及其使用導則規范》
- 新制經濟學學習教案
- 鐵皮石斛集約化高產栽培技術研究
- GB∕T 31838.7-2021 固體絕緣材料 介電和電阻特性 第7部分:電阻特性(DC方法) 高溫下測量體積電阻和體積電阻率
- 變頻器變頻altivar71說明書
評論
0/150
提交評論