Subject: [公告] Java講義 -- 如何寫/跑 Applet 程式 ? ? 如何寫/跑 Applet 程式 ? tsaiwn@csie.nctu.edu.tw -- Applet 程式當然也要先被 compile 成 Bytecode (class 檔) -- Applet 程式要配合 HTML 檔讓Browser 由 Server 端抓到Browser端執行 (當然要有內建 Java VM 之 瀏覽器) (可先用 appletviewer 測試) -- Java 提供的Class都用大寫字母開頭, 例如 Applet.class -- Java 把一些相關的 Class 檔集合在一子目錄中, 稱之為 package 例如 java.applet.Applet 就是在 java/applet/ 目錄中的 Applet.class 用到它時為了程式寫起來簡短阿就先 import java.applet.Applet; *** 若用到不同package中有相同的的Class名稱, 則須寫全名 -- 所有Applet 程式均須繼承自 java.applet 這 package 中的 Applet這 Class 要在Applet中做輸出常用java.awt這 package中的Graphics.class(稍後說明) -- 請注意所謂 "java.awt 這 package" 是指 java/awt/*.class 而 java.awt.event 這 package 是指 java/awt/event/*.class 也就是說在目錄 java/awt/ 中除了 *.class 外還有 event/ 等很多子目錄 -- 繼承的寫法與 C++ 略有不同, 要寫 "extends", 如: import java.applet.Applet; public class Myhwk extends Applet { // ... } -- Applet 程式被Web Browser啟動時(瀏覽到該網頁), 將依續執行 init(), start(), paint() 這三個 method 在被繼承的 Applet.class 中這三個 method 都沒做事, (method 就是member function函數或稱函式), 你可以依需要將之重新定義而蓋掉(override)它們原來的版本。 -- 更仔細地說, 當 Applet 第一次被從Server端抓到Browser端之記憶體時, 先執行 init(), 再來是 start(), 然後 paint(), 若離開該網頁或是按STOP 使該頁放棄則執行 stop(); 再回到該網頁則又執行 start(), 但不會再執行 init(), 因此一般在 init()中是做些初始準備工作 例如設定一些初值, 或弄一些按鈕標籤等元件... -- 要讓Applet 在網頁中顯示訊息, 最簡單的方法就是在 paint() 這 method中做。 paint()接受一個屬於 Graphics.class 的Object(物件, 個體), 該 Class 有很多 method 可以用, 印出字串可用 drawString() 這method。 例如: public class Myhwk extends Applet { //... 注意Graphics, Color, Font 都在 java.awt 中, 別忘了 import public void paint(Graphics g) { g.clearRect(0, 0, getSize().width, getSize().height); g.setColor(Color.blue); g.setFont( new Font("Courier", Font.BOLD, 40) ); g.drawString("Hello Kids!", 60, 120 ); } } -- 上例中drawString()等各個method只是Graphics.class 中一小部份method, 可用Web Browser看資工系網頁上蒐集的Java說明文件, 這在習題中已提示過 如果你是用文字視窗在系上工作站工作, 可使用 lynx 如: lynx www.csie.nctu.edu.tw/document/java/ 進入後, 用上下方向鍵配合空白鍵與 b 以及 Enter 鍵選你要的hyperlink 用左方向鍵回上一層 參考API說明請選 " [INLINE] JDK 1.2.2 的文件 " 進入後選 " API & Language " 再來, 因lynx使用文字模式, 只好選 "Java 2 Platform API Specification" 右邊的 " (NO FRAMES)" --- 注意是按向下鍵 (或 TAB 鍵)不是按向右鍵 進入後再按 Enter 進入樹狀(Tree)文件中找你要看的 API 說明 Graphics.class 是長在java.awt 這package中(awt = Abstract Window Toolkit) 還有, 用 lynx 時按空白鍵等於按 PageDown, 按 b 鍵等於按 PageUp ㄟ, 找到 Graphics.class ( java.awt.Graphics )資料了嗎? 當然用個 Web Browser (如 IE 或 Netscape) 來看會舒服多了:) http://www.csie.nctu.edu.tw/document/java/