首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Applet 程式設計完整學習筆記:生命週期、繪圖優化與應用場景

     編輯:Java 相關知識

一、Applet 運作原理與生命週期

Applet 嵌入 HTML 頁面,由容器(AppletViewer 或瀏覽器)載入並控制執行。瀏覽器建立 Applet 類別實例後,透過五個 public void 方法控制生命週期:

  1. init():初始化,建立所需物件、初始化資料成員。瀏覽器先呼叫預設建構子,再呼叫此方法。
  2. start():啟動/重新啟動。緊接在 init() 後首次呼叫;使用者離開頁面再返回時也會呼叫。啟動執行緒、動畫等資源。
  3. paint(Graphics g):繪圖。init() 結束、start() 啟動後呼叫;視窗遮蔽後重繪也會呼叫。使用容器傳入的 Graphics 物件繪圖。
  4. stop():暫停。使用者離開頁面時呼叫,立即停止 start() 中啟動的所有作業。
  5. destroy():銷毀。終止執行前呼叫,釋放本地系統資源。執行前必先呼叫 stop()。

二、Applet 程式設計要點

1. Graphics 物件由容器建立

paint(Graphics g) 的 g 由容器傳入,不可自行實例化。

2. 善用 super.paint(g)

public void paint(Graphics g) {
    super.paint(g); // 良好習慣,複雜 Applet 避免嚴重錯誤
    g.drawString("Java Applet", 25, 25);
}

3. 座標系統

原點在左上角,單位為像素。

4. 文字換行

drawString 不支援 \n 換行,會顯示未知字元或無輸出。需自行計算座標分行繪製。

5. 影像載入

Image 為抽象類別,不可直接實例化。需呼叫 getImage(url, name) 由容器載入:

Image logo = getImage(getDocumentBase(), "logo.jpg");

6. 閃爍問題與解決方案

repaint() 預設清除背景再呼叫 paint(),間隙造成閃爍。兩種改善方式:

  • 覆寫 update():預設 update() 清背景再呼叫 paint()。覆寫後將繪圖邏輯移入 update(),避免重複清背景。
  • 雙緩衝:建立離岸影像(createImage()),取得其 Graphics 離岸繪圖,完成後一次 drawImage() 繪至螢幕。大幅減少閃爍與影像遺失。

最佳實踐:paint() 僅呼叫 update(),所有繪圖在離岸緩衝區完成,最後一次性輸出。

三、深入學習資源

JDK 安裝目錄下的 demo/applet 含豐富經典原始碼:3D 圖形、動畫、時鐘等,親自執行研究是最佳學習途徑。

四、Applet 應用領域現況

隨著 Flash 流行,Applet 已退出網頁動畫舞台。現主要用於:

  • 複雜動態 Web 圖形(如股票即時曲線圖)
  • 瀏覽器端人機互動
  • 基於 Intranet/Internet 的即時監控系統(工廠設備參數檢測等)

此類場景利用 Applet 的 JVM 功能與本地運算能力,為純 Web 技術難以企及。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved