import java.awt.Graphics;
public class HelloWorldApplet extends java.applet.Applet {
public void paint(Graphics g) {
g.drawString("Hello world!", 5, 25);
}
}
java.applet.Applet。paint() 必須 public。Graphics 需 import java.awt.Graphics。main(),不可獨立執行,需由瀏覽器或 appletviewer 載入自動呼叫 paint()。<applet code="HelloWorldApplet.class" width="150" height="25"
codebase="https://www.example.com/applets/">
</applet>
code:類別檔名稱(同目錄可省路徑)。codebase:指定類別檔所在基底 URL。width/height:標準屬性。若瀏覽器無法執行,可用 appletviewer hello.html 測試(忽略 HTML、直接執行 Applet)。
<applet code="MyApplet.class" width="300" height="200">
<param name="font" value="Arial">
<param name="size" value="14">
</applet>
在 init() 中取得:String font = getParameter("font");。回傳 String,無參數回傳 null,需自行型別轉換。
| 方法 | 呼叫時機 | 備註 |
|---|---|---|
init() | Applet 載入時 | 相當於 application 的 main,只執行一次 |
start() | init() 結束後 | 可重複呼叫(如 stop 後重啟) |
stop() | 頁面離開或瀏覽器最小化 | 與 start 對應 |
destroy() | Applet 卸載前 | 與 init 對應,釋放資源 |
paint(Graphics g) | 初始化、視窗移動、重繪需求時 | 頻繁呼叫 |
輔助方法:repaint() → 呼叫 update() → 清除螢幕 → 呼叫 paint()。動畫三要素:paint/repaint/update。update 中常用 g.clipRect() 限制重繪區域。
動畫或耗資源任務必須用執行緒,避免阻塞事件派發執行緒。
import java.awt.Graphics;
import java.util.Date;
public class DigitalClock extends java.applet.Applet implements Runnable {
Date theDate;
Thread runner;
public void start() {
if (runner == null) {
runner = new Thread(this);
runner.start();
}
}
public void stop() {
if (runner != null) {
runner.stop(); // 已棄用,建議用旗標控制迴圈結束
runner = null;
}
}
public void run() {
while (true) {
theDate = new Date();
repaint();
try { Thread.sleep(1000); }
catch (InterruptedException e) {}
}
}
public void paint(Graphics g) {
g.drawString(theDate.toString(), 10, 50);
}
}
Runnable,須實作 run()。new Thread(this) 傳入 Applet 實例(即 Runnable 目標)。start() 啟動執行緒,run() 週期性更新資料並呼叫 repaint() 觸發 paint()。stop() 結束執行緒(現代寫法建議用 volatile boolean running 旗標控制迴圈)。