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

Java Applet 圖片加載與顯示完整指南:從 URL 到 Jar 包資源

     編輯:Java 相關知識

Applet 顯示圖片涉及資源定位、異步加載、繪製回調等關鍵點。本文系統梳理六大步驟,並提供可直接運行的完整示例代碼。

核心步驟

  1. 實現 ImageObserver:public class MyApplet extends Applet implements ImageObserver,接收圖片加載進度通知。
  2. 確定基礎 URL:
    • getDocumentBase():HTML 頁面所在目錄。
    • getCodeBase():Applet class 文件所在目錄。
  3. 獲取 Image 對象:img = getImage(baseURL, "relative/path/img.gif"),立即返回,異步加載。
  4. 繪製圖片:在 paint(Graphics g) 中調用 g.drawImage(img, x, y, this),最後一個參數傳入 ImageObserver(即 this),當圖片準備好自動觸發重繪。
  5. Jar 包內資源讀取:getClass().getResourceAsStream("/image.gif") 讀取流 → 字節數組 → createImage(bytes)。
  6. 完整示例:見代碼區,包含初始化路徑、背景色設置、錯誤處理。

關鍵代碼片段

public void init() {
    setBackground(Color.white);
    imgPath = "img/test.gif"; // 相對路徑
}

public void paint(Graphics g) {
    URL imgURL = getDocumentBase();
    img = getImage(imgURL, imgPath);
    g.drawImage(img, 100, 100, this); // 異步繪製,ImageObserver 自動重繪
}

常見坑與對策

  • 圖片不顯示:檢查路徑大小寫、Jar 包內資源是否以 / 開頭、是否簽名導致安全限制。
  • 閃爍:雙緩衝繪製(createImage(width,height) 離屏繪圖再一次性 drawImage)。
  • 跨域:Applet 只能加載同源(CodeBase/DocumentBase)資源,跨域需簽名或服務端代理。
注意:Applet 技術已被主流瀏覽器棄用(Java 9 標記移除,Java 11 徹底移除),新項目請改用 Web 技術(Canvas/WebGL/WebAssembly)或 JavaFX/WebStart 替代方案。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved