搜档网
当前位置:搜档网 › chp12_JavaApplet

chp12_JavaApplet

網路應用程式Java Applet

1.前言 (2)

2.Java Applet的編輯到執行 (3)

(1). 編輯 (3)

(2). 編譯 (4)

(3). 嵌入網頁 (5)

(4). 執行 (6)

3.Applet的開啟與結束 (8)

(1). 範例練習:exp12_2_1.java (9)

4.HTML傳遞參數給Applet (12)

(1). 範例練習:exp12_3_1.java (12)

5.Applet之間的互動 (16)

(1). 範例練習:exp12_4_1.java (17)

6.實例:exp12_5_1.java (23)

1.前言

本書Java學習入門從主控制台模式下(「命令提示字元」視窗)開始,先介紹Java基本語法與流程控制來奠定Java的基礎。接著撰寫視窗應用程式,開啟Java應用的大門。然而在網路為主流的當下,Java豈可缺席?這一章我們就好好來認識Java如何撰寫網路應用程式。

Java能在網路上執行,是透過JApplet類別的程式,JApplet類別亦擁有視窗環境下的所有元件及繪圖功能,Swing套件也都可以使用。我們上網時,幾乎都透過瀏覽器程式,例如HTML語言,這種語言負責架起眾多平台間的溝通重任,必須預留極大的發展空間,先天上不能有太多的限制,相對的就顯得非常陽春,但是它提供透過外掛、嵌入等功能。Java Applet程式正是透過這種方式嵌入HTML程式內

2.Java Applet的編輯到執行

Java Applet雖是由Java撰寫的程式,但却無法在編譯過後直接執行。須嵌入Web網頁,再藉由支援Java的瀏覽器(如Internet Explorer)來執行。因此Java Applet程式從編輯到執行的過程,需要下列四個的步驟:

接下來,我們用一個簡單的Java Applet程式,來進行Java Applet程式從編輯到執行的完整過程。在本書中有關Java Applet程式與所在資料夾改用A開頭。

(1).編輯

Step1 開啟「記事本」撰寫下列程式碼(行號是方便解說,不必鍵入)。

1. 行02、03:Java Applet程式主類別繼承javax.swing套件的

JApplet類別。

2. 行04~06:Java Applet程式與Java Application程式最大的

不同是,Applet沒有執行程式的入口main()方法。在這裡我們看到的執行入口是自動重繪的paint()方法。除此之外,Applet 尚有其他執行入口,如:init()、start()、stop()、destory(),

請參閱12.2節。

3. 行05:為本Applet程式所要表述的內容。即在畫布的座標(100,50)處顯示“百聞不如一見!”字串,而這個畫布未來將會出現在瀏覽器內。

(2).編譯

(3).嵌入網頁

1. 行07:在 之間,嵌入Java程式

編譯過的類別檔「A12_1_1.class」。

2. 行03:為瀏覽器的標題列文字,文字可任意設定。

3. 在 標籤能設定的屬性,整理如下:

①CODE:為必要屬性,指定Applet類別檔(.class)檔名。

而檔案所在資料夾路徑由CODEBASE屬性設定。

②CODEBASE:選擇性屬性,指定存放Applet類別檔的路

徑。若省略本屬性設定,則表示HTML網頁程式檔

(.html)與Applet類別檔(.class)放在同一資料夾。

③ALT:選擇性屬性,當瀏覽器無法執行 標籤

內的Java Applet 程式時,指定顯示的替代文字。

④WIDTH:選擇性屬性,指定Java Applet程式在瀏覽器的展示區寬度。

⑤HEIGHT:選擇性屬性,指定Java Applet程式在瀏覽器的展示區高度。

⑥NAME:選擇性屬性,指定Java Applet程式的實體名稱,提供給其它

Java Applet程式呼叫使用。

⑦ALIGN:選擇性屬性,指定Java Applet程式的展示區在瀏覽器內的

對齊方式,屬性值有LEFT(靠左,預設值)、CENTER(置中)、

RIGHT(靠右)。

⑧VSPACE:選擇性屬性,指定Java Applet程式展示區周圍的高度間隔。

⑨HSPACE:選擇性屬性,指定Java Applet程式展示區周圍的寬度間隔。⑩ 標籤:選擇性標籤,可傳遞參數給Java Applet程式使用。其中NAME屬性傳遞參數名稱,V ALUE屬性傳遞參數值。

(4).執行

Java Applet程式,如下圖:

3.Applet的開啟與結束

除了paint() 方法以外,JApplet類別還從Applet類別繼承了一些重要方法,如:init() 、start() 、stop() 、destory() 。當HTML的 標籤開啟Java Applet後,系統會依順序呼叫(1) init() 方法、(2) start() 方法、(3) paint() 方法。而stop() 方法、destory() 方法會結束Java Applet的執行。這些方法開啟與結束Applet的方法,說明如下:

1. void init()

當Java Applet被啟動時,init() 是第一個被呼叫而執行的方法,但只

能呼叫一次。主要的功能在進行起始化動件,如:設定變數初值、載

入影像、載入聲音…。

2. void start()

start() 被呼叫的情況有三種:

①當啟動Java Applet時,呼叫init() 方法後,會接著呼叫start()

方法。

②當Applet所在畫面成為主視窗時,start() 便會被呼叫一次。如:

切換到其它網頁後再返回本瀏覽器時,會執行start() 一次。

③當呼叫stop() 方法,再重新啟動程式時,會執行start() 一次。

3. void stop()

當切換到其它網頁時,或是關閉Applet所在的瀏覽器時,便會

執行stop()方法來暫停Java Applet的工作。但當重新返回

Applet所在的瀏覽器時,會執行start() 方法。

4. void destroy()

當結束Applet所在的瀏覽器時,便先會執行stop() 方法來暫停

Java Applet的工作,然後再執行destroy() 方法來移除Java

Applet,以釋放執行Applet時所佔據的記憶體空間。

(1).範例練習:exp12_2_1.java

1. 行08:init() 方法為Java Applet程式執行入口。

2. 行03:因含有init()方法,故為Java Applet程式的主類別,須加上修飾子public,而且其類別名稱須與.java檔案名稱一樣。若要為Java Applet程式,可繼承JApplet類別。

1. 行03:為瀏覽器的標題列文字。

2. 行06~11:在 間,嵌入類別檔「A12_2_1.class」。

其中,Java Applet所需要的顯示範圍為寬度220像素、

高度150像素。

4.HTML傳遞參數給Applet

用HTML的 標籤來開啟Java Applet,也可以用下一層的

標籤之屬性NAME(參數名稱)、V ALUE(參數值)來傳遞參數。而寫在HTML程式中的參數,在Applet程式中用g etParameter (“參數名稱”) 來取得參數值。

(1).範例練習:exp12_3_1.java

1. 行07、17:本HTML程式有兩次使用 標籤,且皆使用CODE 屬性指定呼叫同一個Java Applet 類別檔

『A12_3_1』。會在瀏覽器上會顯示兩個Applet程式執行結果。2. 行10~12、20~22:本HTML程式傳遞了兩組參數,每組參數皆有三個參數,分別是圖形檔案名稱(paramPic)、字串(paramTxt)、數字(paramNum)。但在 標籤中

的參數名稱及參數值皆用字串形式來表達。

3. 行14、15:為空格符號,使嵌入網頁的Applet程式執行區塊間,有適當的間隙。

1. 行05:取得從HTML程式傳遞過來的paramPic參數值,並指派給字串變數pic_name。

2. 行07:該paramPic參數值其實是圖形檔案名稱,檔案所在的路徑須由getCodeBase() 方法取得,而路徑可由HTML程式

標籤的CODEBASE 屬性來設定(若省略

CODEBASE 屬性設定,表示與Applet類別檔放在同一資夾)。

因此getImage() 方法是從指定的路徑去取得指定的圖形檔案。

3. 行12:取得從HTML程式傳遞過來的paramTxt參數值,直接加入到標籤物件的標題文字中。

4. 行15:取得從HTML程式傳遞過來的paramNum參數值,由於該數值屬字串型態,須先轉換成整數型態,再指派給整數變數

love。

5.Applet之間的互動

在HTML的 標籤內可以設定一個NAME屬性,它的作用是命名嵌入HTML的Applet程式之實體名稱。當一個HTML檔案內有嵌入多個Applet時,Applet之間若需要互動便必須設定實體名稱,彼此才能互相”稱呼”並找到對方。但嵌入的Applet程式都必須在相同的目錄,亦即每個Applet的CODEBASE屬性設定值必須相同,如此不同的Applet程式可放在同一個瀏覽器中。

若在瀏覽器中的Applet甲程式和Applet乙程式之間要互動,則在Java Applet的程式碼中,要包含下列幾個步驟:

(1).範例練習:exp12_4_1.java

1. 行06~12:嵌入的Applet程式類別為『A12_4_1a.class』,其實體名稱為”user1”。第11行傳遞一個參數user,用途在傳遞本Applet程式實體名稱為”user1”。

2. 行16~22:嵌入的Applet程式類別為『A12_4_1b.class』,其實體名稱為”user2”。第21行傳遞一個參數user,用途在傳遞本Applet程式實體名稱為”user2”。

1. 本程式的目的,是將放在「A12_4_1a」程式(程式類別實體

相关主题