1. 程式人生 > >一個簡單的Applet程式

一個簡單的Applet程式

  Java  Applet 是用Java 語言編寫的一些小應用程式,這些程式是直接嵌入到頁面中,由支援Java的瀏覽器(IE 或 Nescape)解釋執行能夠產生特殊效果的程式。它可以大大提高Web頁面的互動能力和動態執行能力。包含Applet的網頁被稱為Java-powered頁,可以稱其為Java支援的網頁。
  當用戶訪問這樣的網頁時,Applet被下載到使用者的計算機上執行,但前提是使用者使用的是支援Java的網路瀏覽器。由於Applet是在使用者的計算機上執行的,所以它的執行速度不受網路頻寬或者Modem存取速度的限制,使用者可以更好地欣賞網頁上Applet產生的多媒體效果。
  Applet 小應用程式的實現主要依靠java.applet 包中的Applet類。與一般的應用程式不同,Applet應用程式必須嵌入在HTML頁面中,才能得到解釋執行;同時Applet可以從Web頁面中獲得引數,並和Web頁面進行互動。
  含有Applet的網頁的HTML檔案程式碼中必須帶有<applet>和</applet>這樣一對標記,當支援Java的網路瀏覽器遇到這對標記時,就將下載相應的小程式程式碼並在本地計算機上執行該Applet小程式。
   Applet是一種Java的小程式,它通過使用該Applet的HTML檔案,由支援Java的網頁瀏覽器下載執行。也可以通過java開發工具的 appletviewer來執行。Applet 程式離不開使用它的HTML檔案。這個HTML檔案中關於Applet的資訊至少應包含以下三點:
  1)位元組碼檔名(編譯後的Java檔案,以.class為字尾)
  2)位元組碼檔案的地址
  3)在網頁上顯示Applet的方式。
  一個HTML檔案增加Applet有關的內容只是使網頁更加富有生氣,如新增聲音、動畫等這些吸引人的特徵,它並不會改變HTML檔案中與Applet無關的元素。

(一) Applet程式開發步驟
  Applet程式開發主要步驟如下:
  1)選用EDIT或Windows Notepad等工具作為編輯器建立Java Applet源程式。
  2)把Applet的源程式轉換為位元組碼檔案。
  3)編制使用class 的HTML檔案。在HTML檔案內放入必要的<APPLET>語句。
  下面舉一個最簡單的HelloWorld 例子來說明Applet程式的開發過程:
  (1) 編輯Applet 的java原始檔
  建立資料夾C:/ghq,在該資料夾下建立 HelloWorld.java
  檔案的原始碼如下:

import java.awt.*;
import java.applet.*;
public class HelloWorld extends Applet //繼承Appelet類,這是Appelet Java程式的特點
{
 public void paint(Graphics g )
 {
  g.drawString("Hello World!",5,35);
 }
}

  儲存上述程式在C:/ghq/HelloWorld.java檔案裡。
  (2)編譯Applet
  編譯HelloWorld.java原始檔可使用如下JDK命令:

C:/ghq/>javac HelloWorld.java<Enter>

  注意:如果編寫的源程式違反了Java程式語言的語法規則,Java編譯器將在螢幕上顯示語法錯誤提示資訊。原始檔中必須不含任何語法錯誤,Java編譯器才能成功地把源程式轉換為appletviewer和瀏覽器能夠執行的位元組碼程式。
  成功地編譯Java applet之後生成響應的位元組碼檔案HelloWorld.class的檔案。用資源管理器或DIR命令列出目錄列表,將會發現目錄C:/ghq中多了一個名為HelloWorld.class的檔案。
  (3)建立HTML檔案
   在執行建立的HelloWorld.class 之前,還需建立一個HTML檔案,appletviewer或瀏覽器將通過該檔案訪問建立的Applet。為執行HelloWorld.class, 需要建立包含如下HTML語句的名為HelloWorld.html的檔案。

<HTML>
<TITLE>HelloWorld! Applet</TITLE>
<APPLET
CODE="JavaWorld.class"
WIDTH=200
HEIGHT=100>
</APPLET>
</HTML>


   本例中,<APPLET>語句指明該Applet位元組碼類檔名和以畫素為單位的視窗的尺寸。雖然這裡HTML檔案使用的檔名為 HelloWorld.HTML,它對應於HelloWorld.java的名字,但這種對應關係不是必須的,可以用其他的任何名字(比如說 Ghq.HTML)命名該HTML檔案。但是使檔名保持一種對應關係可給檔案的管理帶來方便。
  (4)執行 HelloWorld.html
  如果用appletviewer執行HelloWorld.html,需輸入如下的命令列:

C:/ghq/>appletviewer JavaWorld.html<ENTER>


  可以看出,該命令啟動了appletviewer並指明瞭HTML檔案,該HTML檔案中包含對應於HelloWorld 的<APPLET>語句。
  如果用瀏覽器執行HelloWorld Applet,需在瀏覽器的位址列中輸入HTML檔案URL地址。
  至此,一個Applet程式的開發執行整個過程結束了(包括java原始檔、編譯的class檔案、html檔案以及用appletviewer或用瀏覽器執行)。

(二) Applet類
  Applet類是所有Applet應用的基類,所有的Java小應用程式都必須繼承該類。如下所示。

import java. applet.*;
public class OurApplet extends Applet
{
......
......
}


  Applet類的建構函式只有一種,即:public Applet()
  Applet實現了很多基本的方法,下面列出了Applet類中常用方法和用途。

public final void setStub(AppletStub stub)
//設定Applet的stub.stub是Java和C之間轉換引數並返回值的程式碼位,它是由系統自動設定的。
public boolean isActive();// 判斷一個Applet是否處於活動狀態。
public URL getDocumentBase();// 檢索表示該Applet執行的檔案目錄的物件。
public URL getCodeBase();// 獲取該Applet 程式碼的URL地址。
public String getParameter(String name);// 獲取該Applet 由name指定引數的值。
public AppletContext getAppletContext();// 返回瀏覽器或小應用程式觀察器。
public void resize(int width,int height);// 調整Applet執行的視窗尺寸。
public void resize(Dimension d);// 調整Applet執行的視窗尺寸。
public void showStatus(String msg);// 在瀏覽器的狀態條中顯示指定的資訊。
public Image getImage(URL url); // 按url指定的地址裝入圖象。
public Image getImage(URL url,String name);// 按url指定的地址和檔名載入影象。
public AudioClip getAudioClip(URL url);// 按url指定的地址獲取聲音檔案。
public AudioClip getAudioClip(URL url, String name);// 按url指定的地址和檔名獲取聲音。
public String getAppletInfo();// 返回Applet應用有關的作者、版本和版權方面的資訊;
public String[][] getParameterInfo();
// 返回描述Applet引數的字串陣列,該陣列通常包含三個字串: 引數名、該引數所需值的型別和該引數的說明。
public void play(URL url);// 載入並播放一個url指定的音訊剪輯。
public void destroy();//撤消Applet及其所佔用的資源。若該Applet是活動的,則先終止該Applet的執行。

  (1) Applet執行狀態控制基本方法
  Applet類中的四種基本方法用來控制其執行狀態:init()、start()、stop()、destroy()
  init()方法
  這個方法主要是為Applet的正常執行做一些初始化工作。當一個Applet被系統呼叫時,系統首先呼叫的就是該方法。通常可以在該方法中完成從網頁向Applet傳遞引數,新增使用者介面的基本元件等操作。
  start()方法
   系統在呼叫完init()方法之後,將自動呼叫start()方法。而且,每當使用者離開包含該Applet的主頁後又再返回時,系統又會再執行一遍 start()方法。這就意味著start()方法可以被多次執行,而不像init()方法。因此,可把只希望執行一遍的程式碼放在init()方法中。可 以在start()方法中開始一個執行緒,如繼續一個動畫、聲音等。
  stop()方法
  這個方法在使用者離開 Applet所在頁面時執行,因此,它也是可以被多次執行的。它使你可以在使用者並不注意Applet的時候,停止一些耗用系統資源的工作以免影響系統的運 行速度,且並不需要人為地去呼叫該方法。如果Applet中不包含動畫、聲音等程式,通常也不必實現該方法。
  destroy()方法
   與物件的finalize()方法不同,Java在瀏覽器關閉的時候才呼叫該方法。Applet是嵌在HTML檔案中的,所以destroty()方法 不關心何時Applet被關閉,它在瀏覽器關閉的時候自動執行。在destroy()方法中一般可以要求收回佔用的非記憶體獨立資源。(如果在Applet 仍在執行時瀏覽器被關閉,系統將先執行stop()方法,再執行destroy()方法。
  (2) Applet應用的有關引數說明
  利用Applet來接收從HTML中傳遞過來的引數,下面對這些引數作一簡單說明:
  * CODE標誌
  CODE標誌指定Applet的類名;WIDTH和HEIGHT標誌指定Applet視窗的畫素尺寸。在APPLET語句裡還可使用其他一些標誌。
  * CODEBASE 標誌
   CODEBASE標誌指定Applet的URL地址。Applet的通用資源定位地址URL,它可以是絕對地址 ,如www.sun.com。也可以是相對於當前HTML所在目錄的相對地址,如/AppletPath/Name。如果HTML檔案不指定 CODEBASE 標誌,瀏覽器將使用和HTML檔案相同的URL。
  * ALT 標誌
  雖然Java在WWW上很受歡迎,但並非所有瀏覽器都對其提供支援。如果某瀏覽器無法執行Java Applet,那麼它在遇到APPLET語句時將顯示ALT標誌指定的文字資訊。
  * ALIGN 標誌
  ALIGN標誌可用來控制把Applet視窗顯示在HTML文件視窗的什麼位置。與HTML<LMG>語句一樣,ALIGN標誌指定的值可以是TOP、MIDDLE或BOTTOM。
  * VSPACE與HSPACE 標誌
  VSPACE和HSPACE標誌指定瀏覽器顯示在Applet視窗周圍的水平和豎直空白條的尺寸,單位為畫素。如下例使用該標誌在Applet視窗之上和之下各留出50畫素的空白,在其左和其右各留出25畫素的空白:
  * NAME 標誌
  NAME標誌把指定的名字賦予Applet的當前例項。當瀏覽器同時執行兩個或多個Applet時,各Applet可通過名字相互引用或交換資訊。如果忽略NAME標誌,Applet的名字將對應於其類名。
  * PARAM 標誌
  通用性是程式設計所追求的目標之一。使使用者或者程式設計師能很方便地使用同一個Applet完成不同的任務是通用性的具體表現。從HTML檔案獲取資訊是提高Applet通用性的一條有效途徑。
  假設編制了一個把某公司的名字在螢幕上捲動的Applet。為了使該Applet更加通用,則可以使該Applet從HTML檔案獲取需要捲動的文字資訊。這樣,若想顯示另一個公司的名字,用不著修改Java Applet本身,只需修改HTML檔案即可。
  PARAM 標誌可用來在HTML檔案裡指定引數,格式如下所示:
PARAM Name="name" Value="Liter"
  Java Applet可呼叫getParameter方法獲取HTML檔案裡設定的引數值。