網路應用程式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的
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的
標籤之屬性NAME(參數名稱)、V ALUE(參數值)來傳遞參數。而寫在HTML程式中的參數,在Applet程式中用g etParameter (“參數名稱”) 來取得參數值。
(1).範例練習:exp12_3_1.java
1. 行07、17:本HTML程式有兩次使用
『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 屬性設定,表示與Applet類別檔放在同一資夾)。
因此getImage() 方法是從指定的路徑去取得指定的圖形檔案。
3. 行12:取得從HTML程式傳遞過來的paramTxt參數值,直接加入到標籤物件的標題文字中。
4. 行15:取得從HTML程式傳遞過來的paramNum參數值,由於該數值屬字串型態,須先轉換成整數型態,再指派給整數變數
love。
5.Applet之間的互動
在HTML的
若在瀏覽器中的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」程式(程式類別實體