Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第二十一章網頁的精靈 -Applet 本章學習目標 applet 概述認識 applet 的執行程序學習載入影像與簡單的動畫製作學習在 applet 裡播放音樂檔
網頁的精靈 -Applet 21-2 21.1 applet 概述 applet 經編譯後, 會產生.class 的檔案, 其過程如下 : web 伺服器 向 web 伺服器要求傳送網頁 使用者電腦 網頁與 applet 一起被下載到使用者電腦裡執行
網頁的精靈 -Applet 21-3 21.1.1 簡單的 Java applet Java 提供了 java.applet.applet 類別, 用來處理 applet 的運作 Applet 類別繼承自 Panel 類別, 其繼承關係如下圖所示 : java.lang.object java.awt.component java.awt.container java.awt.panel java.applet.applet
網頁的精靈 -Applet 21-4 App21_1 是一個簡單的 applet 程式 01 // App21_1, 簡單的 applet 程式 02 import java.awt.*; 03 import java.applet.applet; // 載入 Applet 類別 04 05 public class App21_1 extends Applet // App21_1 衍生自 Applet 類別 06 { 07 public void paint(graphics g) 08 { 09 g.setcolor(color.blue); // 設定繪圖顏色為藍色 10 g.filloval(30,30,50,50); // 繪出圓形並填滿藍色 11 g.setcolor(color.orange); // 設定繪圖顏色為橘色 12 g.filloval(60,40,90,90); // 繪出圓形並填滿橘色 13 } 14 }
網頁的精靈 -Applet 21-5 撰寫與編譯好 App21_1.java 之後, 還必須另外撰寫一個 HTML 檔把 applet 嵌進入 : 01 <!-- App21_1.htm --> 02 <HTML> 03 <BODY BGCOLOR = "FFFF00" > 04 <APPLET 05 CODE = "App21_1.class" 06 WIDTH = "180" 07 HEIGHT = "140" > 08 </APPLET> 09 </BODY> 10 </HTML> 設定背景顏色 指定 applet 為 App21_1.class 設定 applet 的寬度為 240 個像素, 高度為 170 個像素
網頁的精靈 -Applet 21-6 用 Applet 檢視器來觀看 applet 的執行結果, 或直接由瀏覽器開啟 App21_1.htm 查看, 如下圖所示 : 用 applet 檢視器執行 App21_1.htm 的結果 用瀏覽器 (IE6.0) 開啟 App21_1.htm
網頁的精靈 -Applet 21-7 21.1.2 Applet 類別撰寫 applet 程式時必須做下列兩件事 : (1) 載入 java.applet.applet 類別 (2) 定義一類別繼承自 Applet, 並把相關的程式碼撰寫在這個類別內 下表列出了 Applet 類別常用的 method: 表 21.1.1 java.applet.applet 的建構元與 method method void destroy() String getappletinfo() 主要功能 銷毀 Applet 元件, 通常在呼叫此 method 之前, 會先呼叫 stop() 取得 Applet 元件的資訊, 如作者 版權與版本等 如果沒有這些資訊, 則傳回 null AudioClip getaudioclip(url url) 取得網址 url 上的 AudioClip 物件 ( 聲音檔 ) AudioClip getaudioclip(url url, String str) 取得網址為 url, 名稱為 str 的聲音檔 URL getcodebase() 取得此 applet 所在之網址 ( 路徑 )
網頁的精靈 -Applet 21-8 method 主要功能 URL getdocumentbase() 取得嵌入此 applet 之文件的網址 ( 路徑 ) Image getimage(url url) Image getimage(url url, String name) String getparameter(string name) String[][] getparameterinfo() void init() boolean isactive() static AudioClip newaudioclip(url url) void play(url url) void play(url url, String name) void resize(int width, int height) void showstatus(string msg) void start() void stop() 取得網址為 url 的影像檔 取得網址為 url, 名稱為 name 的影像檔 取得名稱為 name 的引數 取得引數訊息, 並以字串陣列的方式傳回 瀏覽器載入 applet 時, 所呼叫的初始化 method 測試 applet 是否在正在執行 取得網址為 url 的聲音檔 播放網址為 url 的聲音檔 播放網址為 url, 名稱為 name 的聲音檔 改變 applet 的大小, 高為 height, 寬為 width 顯示訊息 msg 在狀態視窗上 當 applet 處於作用中視窗時會執行此 method 當 applet 所在的網頁被切換到別的網頁, 或最小化時所呼叫的 method
網頁的精靈 -Applet 21-9 21.1.3 認識 HTML 的檔案結構 HTML 文件屬於純文字檔, 它可用任何的文書編輯軟體來撰寫 下面的格式說明了本章所使用之 HTML 檔案的基本架構 : <HTML> <BODY BGCOLOR = 顏色值 > <APPLET <! - 此處撰寫 applet 的內容 --> </APPLET> </BODY> </HTML> 格式 21.1.1 HTML 網頁的基本架構
網頁的精靈 -Applet 21-10 在撰寫 HTML 文件時, 必須下面幾個注意事項 : (1) HTML 的註解文字是是 <!-- 符號為開頭, 以 --> 符號為結尾 (2) HTML 檔案並無大小寫之分 (3) 每一個 HTML 的標記必須放在 < > 符號裡, 而結尾標記必須加上 / 符號, 如 </HTML>
網頁的精靈 -Applet 21-11 HTML 的 <APPLET> 標記 網頁是利用 HTML 的 <APPLET> 標記, 把 applet 嵌到裡面去的 <APPLET> 標記的格式如下 : <APPLET CODE = "filename" WIDTH = "pixels" HEIGHT = "pixels" [CODEBASE = "URL"] [ALT = "alternate text"] [NAME = "instance name"] [ALIGN = "alignment"] [VSPACE = "pixels"] [HSPACE = "pixels"] > [<PARAM NAME = "name" VALUE = "value">]... [<PARAM NAME = "name" VALUE = "value">] </APPLET> 格式 21.1.2 <APPLET> 標記的格式
網頁的精靈 -Applet 21-12 下面所列的是 <APPLET> 標記裡每一個參數所代表的意義 : 表 21.1.2 參數 CODEBASE CODE ALT NAME WIDTH HEIGHT ALIGN VSPACE HSPACE PARAM NAME VALUE <APPLET> 標記之參數說明 主要功能 指定此 applet 所在之網址 ( 路徑 ), 若未設定此項, 則以目前執行的目錄為 applet 的路徑 設定要開啟之 applet 的檔案名稱, 注意必須包含副檔名.class 如果瀏覽器無法顯示 applet, 則以 alternatetext 字串來顯示 設定 applet 的名稱 每一個 applet 如果都有一個名稱, 則兩個以上的 applet 要相互參考時便可利用名稱來指定 設定 applet 顯示的寬度, 單位為像素 設定 applet 顯示的高度, 單位為像素 設定對齊方式, 包括 LEFT RIGHT TOP BOTTOM 與 MIDDLE 設定 applet 上下所保留的寬度 設定 applet 左右所保留的寬度 要傳給 applet 的參數名稱 要傳給 applet 的參數值
網頁的精靈 -Applet 21-13 簡單的範例 App21_2 是把一個字串寫在 applet 視窗裡位置為 (30,50) 的地方 : 01 // App21_2, 簡單的 applet 程式 02 import java.awt.*; 03 import java.applet.applet; 04 05 public class App21_2 extends Applet 06 { 07 public void paint(graphics g) 08 { 09 g.drawstring("no cross, no crown.",30,50);// 在繪圖區內寫上字串 10 } 11 }
網頁的精靈 -Applet 21-14 準備 HTML 檔把 App21_2.class 嵌入, 並利用瀏覽器來解譯 : 01 <!-- App21_2.htm --> 02 <HTML> 03 <BODY BGCOLOR = "FFFF00" > 04 <APPLET 05 CODE = "App21_2.class" 06 WIDTH = "180" 07 HEIGHT = "120" 08 ALT = " 很抱歉, 您的瀏覽器不支援 Java applet" 09 ALIGN = "RIGHT" 設定 applet 靠右對齊 10 VSPACE = "20" > 設定 applet 與其它元件的垂直距離為 20 11 </APPLET> 12 </BODY> 13 </HTML>
用瀏覽器開啟 App21_2.htm, 將可得到如下的執行結果 網頁的精靈 -Applet 21-15
網頁的精靈 -Applet 21-16 用 applet 檢視器來觀看 applet 時, 在 applet 檢視器裡看不到 ALIGN 與 VSPACE 這兩個設定的效果 下圖是利用 applet 檢視器執行 App21_2.htm 的結果 :
網頁的精靈 -Applet 21-17 在 applet 裡讀取 HTML 檔案裡的參數 利用 <PARAM> 標記, 即可把 HTML 檔案裡的參數傳到 applet 裡, 而 applet 則是以 getparameter() method 來接收參數 App21_3 是參數傳遞的範例 01 // App21_3, 簡單的 applet 程式 02 import java.awt.*; 03 import java.applet.applet; 04 05 public class App21_3 extends Applet 06 { 07 public void paint(graphics g) 08 { 09 g.drawstring(getparameter("str1"),30,40);// 取得 HTML 裡的 str1 字串 10 g.drawstring(getparameter("str2"),30,60);// 取得 HTML 裡的 str2 字串 11 } 12 }
網頁的精靈 -Applet 21-18 01 <!-- App21_3.htm --> 02 <HTML> 03 <BODY BGCOLOR = "FFFF00" > 04 <APPLET 05 CODE = "App21_3.class" 06 WIDTH = "250" 07 HEIGHT = "120" > 08 09 <PARAM NAME= "str1" VALUE = "Repentance is a bitter physic." > 10 <PARAM NAME= "str2" VALUE = "Laughter is the best medicine." > 11 </APPLET> 12 </BODY> 13 </HTML>
網頁的精靈 -Applet 21-19 在瀏覽器裡使用 Java 主控台 在 Windows 的 控制台 裡有一個 Java 的圖示, 執行它之後可開啟 Java 控制面版 對話方塊, 如下圖所示 :
網頁的精靈 -Applet 21-20 App21_4 是 Java 主控台的使用範例 01 // App21_4, 簡單的 applet 程式 02 import java.awt.*; 03 import java.applet.applet; 04 05 public class App21_4 extends Applet 06 { 07 public void paint(graphics g) 08 { 09 g.drawstring("experience is the best teacher.",30,50); 10 System.out.println("printed from Java console!"); 11 } 12 } 將字串送到 Java 的主控台 01 <!-- App21_4.htm --> 02 <HTML> 03 <BODY BGCOLOR = "FFFF00" > 04 <APPLET 05 CODE = "App21_4.class" 06 WIDTH = "250" 07 HEIGHT = "120" > 08 </APPLET> 09 </BODY> 10 </HTML>
網頁的精靈 -Applet 21-21 被送到 Java 的主控台的字串
網頁的精靈 -Applet 21-22 21.2 applet 的執行程序 Applet 類別裡定義了 init() start() stop() 與 destroy() 這 4 個 method, 會配合 applet 的執行而自動被呼叫 下面是這 4 個 method 被呼叫之時機 : init() start() stop() applet 啟動時第一個呼叫的 method, 只執行一次, 主要是用來對 applet 設定初值之用 呼叫完 init() method 之後, 接著便立刻呼叫 start() 只要 applet 的畫面出現一次,start() 便會被呼叫一次 切換到其它網頁瀏覽, 或者是關閉瀏覽器時, 便會執行 stop() method 以暫停 applet 的執行 destroy() 關閉瀏覽器時會先呼叫 stop() 暫停執行 applet, 然後呼叫 destroy() 來釋放原先被 applet 佔去的記憶體空間
網頁的精靈 -Applet 21-23 applet 的生命週期 (life cycle): 設定初值 進入網頁或按重新整理按鈕 init() 程式開始執行 start() 跳到別頁 回到本頁 stop() 關閉 applet stop() 銷毀 applet destroy()
網頁的精靈 -Applet 21-24 App21_5 是用來追蹤 applet 執行時程式 01 // App21_5, 簡單的 applet 程式 02 import java.awt.*; 03 import java.applet.applet; 04 05 public class App21_5 extends Applet 06 { 07 public void init() // init() method 08 { 09 System.out.println("init() method called!"); 10 } 11 public void start() // start() method 12 { 13 System.out.println("start() method called!"); 14 } 15 public void stop() // stop() method 16 { 17 System.out.println("stop() method called!"); 18 } 19 public void destroy() // destroy() method 20 { 21 System.out.println("destroy() method called!"); 22 }
網頁的精靈 -Applet 21-25 23 public void paint(graphics g) 24 { 25 g.drawstring("love makes the world go round.",30,50); 26 System.out.println("paint() method called!"); 27 } 28 } 01 <!-- App21_5.htm --> 02 <HTML> 03 <BODY BGCOLOR = "FFFF00" > 04 <APPLET 05 CODE = "App21_5.class" 06 WIDTH = "250" 07 HEIGHT = "120" > 08 </APPLET> 09 </BODY> 10 </HTML>
網頁的精靈 -Applet 21-26 21.3 裝扮 applet 視窗 21.3.1 加入 AWT 元件到 applet 裡 App21_6 在 applet 視窗裡加入一個按鈕 btn: 01 // App21_6, 加入 AWT 元件到 applet 裡 02 import java.awt.*; 03 import java.awt.event.*; 04 import java.applet.applet; 05 06 public class App21_6 extends Applet implements ActionListener 07 { 08 Button btn; // 宣告 Button 型態的變數 btn 09 public void init() 10 { 11 btn=new Button("Start"); // 建立 btn 物件 12 btn.addactionlistener(this); // 以 applet 本身當成 btn 的傾聽者 13 add(btn); // 將 btn 按鈕加入 applet 視窗裡 14 } 15 public void actionperformed(actionevent e) 16 { 17 if(btn.getlabel()=="start") 18 btn.setlabel("stop"); // 設定按鈕上方的文字為 Stop
網頁的精靈 -Applet 21-27 19 else 20 btn.setlabel("start"); // 設定按鈕上方的文字為 Start 21 } 22 } 01 <!-- App21_6.htm --> 02 <HTML> 03 <BODY BGCOLOR = "FFFF00" > 04 <APPLET 05 CODE = "App21_6.class" 06 WIDTH = "180" 07 HEIGHT = "120" > 08 </APPLET> 09 </BODY> 10 </HTML> 右圖是 App21_6 在 appletviewer 視窗內執行的結果 :
網頁的精靈 -Applet 21-28 21.3.2 在 applet 視窗內用滑鼠繪出圓形 App21_7 是在 applet 內撰寫滑鼠事件的練習 01 // App21_7, 按滑鼠右鍵繪出圓形 02 import java.awt.*; 03 import java.awt.event.*; 04 import java.applet.applet; 05 06 public class App21_7 extends Applet implements MouseListener 07 { 08 int x,y; // 滑鼠指標的 x y 座標 09 boolean clicked=false; 10 11 public void init() 12 { 13 this.addmouselistener(this); // 設定 applet 為自己本身的傾聽者 14 } 15 public void mouseclicked(mouseevent e) 16 { 17 clicked=true; 18 x=e.getx(); // 取得滑鼠按下之點的 x 座標 19 y=e.gety(); // 取得滑鼠按下之點的 y 座標 20 update(getgraphics()); // 清除繪圖區, 然後重繪
網頁的精靈 -Applet 21-29 21 } 22 public void paint(graphics g) 23 { 24 if(clicked) 25 { 26 g.setcolor(color.pink); // 設定顏色為粉紅色 27 g.filloval(x-20,y-20,40,40); // 以按下的位置為圓心繪出圓形 28 } 29 } 30 public void mouseentered(mouseevent e){} 31 public void mouseexited(mouseevent e){} 32 public void mousepressed(mouseevent e){} 33 public void mousereleased(mouseevent e){} 34 35 }
網頁的精靈 -Applet 21-30 01 <!-- App21_7.htm --> 02 <HTML> 03 <BODY BGCOLOR = "FFFF00" > 04 <APPLET 05 CODE = "App21_7.class" 06 WIDTH = "200" 07 HEIGHT = "120" > 08 </APPLET> 09 </BODY> 10 </HTML> 按下滑鼠按鈕時, 會以指標箭頭的頂端為中心繪出粉紅色的實心圓
網頁的精靈 -Applet 21-31 21.4 載入影像與簡單的動畫製作 影像 是由 Image 類別所建立的物件, 而 Image 類別是置於 java.awt 類別庫裡 21.4.1 載入與顯示影像載入與顯示圖檔只要下列三個動作就可以了 : (1) 宣告 Image 類別型態的變數 (2) 利用 getimage() 載入圖檔 (3) 利用 drawimage() 繪出圖檔
網頁的精靈 -Applet 21-32 下面的範例說明了如何在 applet 裡載入一個 jpg 圖檔 : 01 // App21_8, 在 applet 裡載入圖檔 02 import java.awt.*; 03 import java.awt.event.*; 04 import java.applet.applet; 05 06 public class App21_8 extends Applet 07 { 08 Image img; // 宣告 Image 類別型態的變數 img 09 10 public void init() 11 { 12 img=getimage(getcodebase(),"flower.jpg"); // 載入圖檔 13 } 14 15 public void paint(graphics g) 16 { 17 g.drawimage(img,20,20,this); // 將 img 畫在 applet 上 18 } 19 }
01 <!-- App21_8.htm --> 02 <HTML> 03 <BODY BGCOLOR = "FFFF00" > 04 <APPLET 05 CODE = "App21_8.class" 06 WIDTH = "300" 07 HEIGHT = "200" > 08 </APPLET> 09 </BODY> 10 </HTML> 網頁的精靈 -Applet 21-33
網頁的精靈 -Applet 21-34 21.4.2 移動影像 App21_9 是利用滑鼠移動圓形的原理來移動一隻載入的小天使影像 : 01 // App21_9, 在 applet 裡移動圖檔 02 import java.awt.*; 03 import java.awt.event.*; 04 import java.applet.applet; 05 06 public class App21_9 extends Applet implements MouseMotionListener,MouseListener 07 { 08 Image img; // 宣告 Image 類別型態的變數 img 09 int x=10,y=10,posx=10,posy=10,dx,dy; 10 11 public void init() 12 { 13 img=getimage(getcodebase(),"angle.gif"); // 載入影像 14 addmouselistener(this); 15 addmousemotionlistener(this); 16 } 17 public void mousepressed(mouseevent e) 18 { 19 dx=e.getx()-posx; // 取得按下之點與基準點 x 方向之距離
網頁的精靈 -Applet 21-35 20 dy=e.gety()-posy; // 取得按下之點與基準點 y 方向之距離 21 } 22 public void mousedragged(mouseevent e) 23 { 24 x=e.getx()-dx; // 取得拖曳時, 基準點的 x 座標 25 y=e.gety()-dy; // 取得拖曳時, 基準點的 y 座標 26 if(dx>0 && dx<82 && dy>0 && dy<87) // 如果指標落在圖形上方 27 { 28 Graphics g=getgraphics(); 29 update(g); // 清空畫面為背景顏色, 再呼叫 paint() 30 } 31 } 32 public void paint(graphics g) 33 { 34 g.drawimage(img,x,y,this); // 將 img 畫在 applet 上 35 posx=x; // 更新基準點的 x 座標 36 posy=y; // 更新基準點的 y 座標 37 } 38 public void mousemoved(mouseevent e){} 39 public void mousereleased(mouseevent e){} 40 public void mouseentered(mouseevent e){} 41 public void mouseexited(mouseevent e){} 42 public void mouseclicked(mouseevent e){} 43 }
網頁的精靈 -Applet 21-36 01 <!-- App21_9.htm --> 02 <HTML> 03 <BODY BGCOLOR = "FFFF00" > 04 <APPLET 05 CODE = "App21_9.class" 06 WIDTH = "340" 07 HEIGHT = "170" > 08 </APPLET> 09 </BODY> 10 </HTML> 按下滑鼠按鈕拖曳時所產生的動畫 注意左圖僅是動畫的示意圖, 真正在拖曳時只有一個小天使出現
網頁的精靈 -Applet 21-37 畫面閃爍的處理 下面的程式碼可以解決畫面閃爍的情況 : 01 // App21_10, 解決畫面閃爍的問題 02 import java.awt.*; 03 import java.awt.event.*; 04 import java.applet.applet; 05 06 public class App21_10 extends Applet implements MouseMotionListener,MouseListener 07 { 08 Image img; // 宣告 Image 類別型態的變數 img 09 Image imgb; // 宣告 Image 類別型態的變數 imgb 10 Graphics gb; // 宣告 Graphics 類別型態的變數 gb 11 12 int x=10,y=10,posx=10,posy=10,dx,dy; 13 14 public void init() 15 { 16 img=getimage(getcodebase(),"angle.gif"); // 載入影像 17 addmouselistener(this); 18 addmousemotionlistener(this); 19 20 imgb=createimage(getwidth(),getheight()); // 建立 imgb 物件
網頁的精靈 -Applet 21-38 21 gb=imgb.getgraphics(); // 取得 imgb 物件的繪圖區 22 } 23 public void mousepressed(mouseevent e) 24 { 25 dx=e.getx()-posx; // 取得按下之點與基準點 x 方向之距離 26 dy=e.gety()-posy; // 取得按下之點與基準點 y 方向之距離 27 } 28 public void mousedragged(mouseevent e) 29 { 30 x=e.getx()-dx; // 取得拖曳時, 基準點的 x 座標 31 y=e.gety()-dy; // 取得拖曳時, 基準點的 y 座標 32 if(dx>0 && dx<82 && dy>0 && dy<87) // 如果指標落在圖形上方 33 { 34 paint(getgraphics()); // 呼叫 paint() method 35 } 36 } 37 public void paint(graphics g) 38 { 39 gb.setcolor(new Color(255,255,255)); // 設定繪圖顏色為白色 40 gb.fillrect(0,0,getwidth(),getheight()); // 以白色填滿整個畫面 41 gb.drawimage(img,x,y,this); // 將 img 圖檔在 gb 中繪出 42 g.drawimage(imgb,0,0,this); // 將 imgb 的內容顯示在 applet 上 43 44 posx=x; // 更新基準點的 x 座標 45 posy=y; // 更新基準點的 y 座標
網頁的精靈 -Applet 21-39 46 } 47 public void mousemoved(mouseevent e){} 48 public void mousereleased(mouseevent e){} 49 public void mouseentered(mouseevent e){} 50 public void mouseexited(mouseevent e){} 51 public void mouseclicked(mouseevent e){} 52 } 01 <!-- App21_10.htm --> 02 <HTML> 03 <BODY BGCOLOR = "FFFF00" > 04 <APPLET 05 CODE = "App21_10.class" 06 WIDTH = "340" 07 HEIGHT = "170" > 08 </APPLET> 09 </BODY> 10 </HTML>
網頁的精靈 -Applet 21-40 參考下圖的解說, 以便了解每一行程式碼的功用 : imgb 物件的繪圖區 (2) 第 41 行將 img 繪在 imgb 物件的繪圖區上 (1) 第 40 行將繪圖區的顏色設為白色 (3) 第 42 行將 imgb 繪圖區的內容繪在 applet 的繪圖區上
網頁的精靈 -Applet 21-41 21.5 播放音樂檔 AudioClip 介面定義了三個 method, 分別為 loop() play() 與 stop() : 表 21.5.1 java.applet.audioclip 的 method method public void loop() public void play() public void stop() 主要功能重複播放單曲音樂檔播放音樂檔停上播放音樂檔
網頁的精靈 -Applet 21-42 下面的範例在網頁裡設計一個簡單的點唱機 : 01 // App21_11, 在 applet 播放音樂檔 02 import java.awt.*; 03 import java.awt.event.*; 04 import java.applet.applet; 05 import java.applet.audioclip; // 載入 AudioClip 類別 06 07 public class App21_11 extends Applet implements ItemListener 08 { 09 AudioClip midi[]=new AudioClip[3]; // 宣告 AudioClip 介面型態的陣列 10 AudioClip current; // 宣告 AudioClip 介面型態的變數 current 11 12 Choice chc=new Choice(); // 建立 Choice 元件 13 14 public void init() 15 { 載入三個聲音檔, 並把它們設定給 midi 陣列 16 midi[0]=getaudioclip(getcodebase()," 小叮噹.midi"); 17 midi[1]=getaudioclip(getcodebase()," 科學小飛俠.midi"); 18 midi[2]=getaudioclip(getcodebase()," 無敵鐵金剛.midi"); 19 chc.add(" 小叮噹 "); 20 chc.add(" 科學小飛俠 "); 21 chc.add(" 無敵鐵金剛 "); 22 add(chc); 23 chc.additemlistener(this); // 把 applet 當成 chc 的傾聽者 24 current=midi[0]; // 設定目前播放的歌曲為 midi[0]
網頁的精靈 -Applet 21-43 25 current.play(); // 播放歌曲 26 } 27 28 public void itemstatechanged(itemevent e) 29 { 30 current.stop(); // 停止播放歌曲 31 int index=chc.getselectedindex(); // 取得被選取的索引值 32 current=midi[index]; // 設定播放的歌曲為 midi[index] 33 current.play(); // 播放歌曲 34 } 35 } 01 <!-- App21_11.htm --> 02 <HTML> 03 <BODY BGCOLOR = "FFFF00" > 04 <APPLET 05 CODE = "App21_11.class" 06 WIDTH = "180" 07 HEIGHT = "100" > 08 </APPLET> 09 </BODY> 10 </HTML> 從下拉選單裡可以選擇欲播放的音樂
網頁的精靈 -Applet 21-44