Java小应用程序(Applet)的设计课件.ppt
(2)JApplet是只包含一個組件的容器,這個組件就是JRootPane的一個實例,而JRootPane包含了一個稱作內容窗格的容器。(3)內容窗格包含與特定的小應用程式有關的所有內容,可通過getContentPane()方法獲得。即是說,小應用程式必須把所有的組件添加到內容窗格中,而Applet則是把它們直接添加到小應用程式中。(4)我們不能直接為小應用程式設置佈局管理器,而只能對它的內容窗格設置佈局管理。(5)JApplet的實例可以有一個菜單欄,它是由setJMenuBar()方法指定的,而AWT小應用程式卻不能。基於Swing的小應用程式比基於AWT的小應用程式有更多的優勢,它可以使用Swing提供的更多介面元素和性能。但是它也有一個很大的缺陷,那就是很多流覽器都不能支持Swing編寫的小應用程式,而必須依靠安裝JavaPlug-in包。雖然可以讓流覽器在運行Swing小應用程式時自動下載這個包,但是由於JavaPlug-in包並不小,所以對於非寬頻上網的用戶來說是不可忍受的。12.2Applet的通信12.2.1Applet與流覽器的通信我們已經學習過如何通過getParameter()方法從流覽器的Web頁中獲取資訊,同時,Applet也可以要求流覽器為自己做事,例如我們可以讓流覽器打開一個指定的Web頁。為了與流覽器通信,需調用Applet的getAppletContext()方法。這個方法返回一個實現了AppletContext介面的對象,這個介面是實現Applet和流覽器通信的一座橋樑。publicvoidinit() { ImageName=getParameter(image); img=getImage(getDocumentBase(),ImageName); AudioName=getParameter(audio); audio=getAudioClip(getDocumentBase(),AudioName); } publicvoidstart() { audio.play(); }publicvoidpaint(Graphicsg) { g.drawImage(img,0,0,this); } }ShowImageApplet.htmlhtmlbodyappletname=ImageShowercode=ShowImageApplet.classwidth=200height=100 paramname=imagevalue=getJava.gif paramname=audiovalue=windowsstart.wav/applet/body/html圖12.4這個例子展示了如何通過getImage()方法載入一個圖片對象,並將它顯示在流覽器中以及在啟動Applet的時候播放一段音樂。首先,通過getParameter()方法從HTML代碼中提取出參數,即Image和Audio檔的檔案名。然後通過getImage()方法和getAudioClip()方法取得Image和Audio檔的對象。它們包括兩個參數,getDocument()返回包含Applet的Web頁所在的地址,第二個參數getJava.gif指定圖片檔案名。最後在start()方法中播放音樂。這樣,Applet每次啟動時都會伴隨著一段音樂。在paint()方法中調用drawImage()方法顯示圖片,運行時圖片getJava.gif和windowsstart.wav兩個檔必須和ShowImageApplet.html檔在同一目錄下,其運行結果如圖12.4所示。運行結果如圖12.4所示。值的注意的是,如果通過圖片來源地址/getjava/images/getJava_head.gif來構造一個URL對象,並通過getImage()方法載入它的話可能會引發一個訪問違例。這是由於Applet的安全機制。前面已經提到,Applet禁止:包含該Applet的Web頁面所在主機以外的其他任何機器通信。所以無法從其他的URL下載一個資源。12.1.4Applet標記以下為Applet標記的完整句法:applet[archive=archiveList]code=appletFile.classwidth=pixelsheight=pi