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

Java Applet 基礎完整教學:生命週期、HelloWorld、參數傳遞、事件處理、圖片與音頻

     編輯:Java 程式設計入門

Java Applet 基礎完整教學

Applet 是可在支援 Java 的網頁瀏覽器中執行的 Java 程式,擁有完整 Java API 支援,屬全功能應用程式。但與獨立應用程式有關鍵差異。


Applet 與獨立應用程式的主要差異

  • 繼承 java.applet.Applet 類別
  • 無 main() 方法,不會呼叫 main()
  • 設計為內嵌於 HTML 頁面
  • 瀏覽器載入頁面時下載程式碼至用戶端
  • 需 JVM(瀏覽器外掛或獨立執行環境)
  • 受沙箱安全機制限制
  • 相關類別可打包為 JAR 檔下載

Applet 生命週期五大方法

方法呼叫時機
init()Applet 標籤 <param> 處理後,負責初始化
start()init() 後自動呼叫;使用者返回頁面時也會呼叫
stop()使用者離開頁面時自動呼叫,可重複觸發
destroy()瀏覽器正常關閉時呼叫,釋放資源
paint(Graphics g)start() 後或需重繪時呼叫,繼承自 java.awt

「Hello, World」Applet 範例

HelloWorldApplet.java

import java.applet.*;
import java.awt.*;

public class HelloWorldApplet extends Applet {
    public void paint(Graphics g) {
        g.drawString("Hello World", 25, 50);
    }
}

必須匯入 java.applet.Applet 與 java.awt.Graphics。


Applet 類別核心功能

繼承 java.applet.Applet 可取得:

  • Applet 參數
  • HTML 文件網路位置(getDocumentBase())
  • Applet 類別目錄位置(getCodeBase())
  • 瀏覽器狀態列訊息(showStatus())
  • 取得圖片(getImage())、音頻片段(getAudioClip())
  • 播放音頻、調整 Applet 大小

HTML 中嵌入 Applet

HTML 程式碼

<html>
<title>The Hello, World Applet</title>
<hr>
<applet code="HelloWorldApplet.class" width="320" height="120">
If your browser was Java-enabled, a "Hello, World" message would appear here.
</applet>
<hr>
</html>

code 指定類別檔,width/height 設定面板大小,必須以 </applet> 關閉。參數透過 <param> 傳遞。


取得 Applet 參數:CheckerApplet 範例

CheckerApplet.java(關鍵片段)

public class CheckerApplet extends Applet {
    int squareSize = 50;
    public void init() {
        String squareSizeParam = getParameter("squareSize");
        parseSquareSize(squareSizeParam);
        String colorParam = getParameter("color");
        Color fg = parseColor(colorParam);
        setBackground(Color.black);
        setForeground(fg);
    }
    private void parseSquareSize(String param) {
        if (param == null) return;
        try { squareSize = Integer.parseInt(param); }
        catch (Exception e) { /* 保留預設值 */ }
    }
    // parseColor()... paint()...
}

HTML 傳遞參數

<applet code="CheckerApplet.class" width="480" height="320">
<param name="color" value="blue">
<param name="squaresize" value="30">
</applet>

注意:參數名稱不區分大小寫。


應用程式轉換為 Applet 步驟

  1. 撰寫載入 Applet 的 HTML 頁面
  2. 建立 JApplet 子類別並設為 public
  3. 移除 main()、框架視窗建構
  4. 將初始化代碼移至 init()
  5. 移除 setSize()(由 HTML width/height 決定)
  6. 移除 setDefaultCloseOperation()、setTitle()、setVisible(true)

事件處理範例

ExampleEventHandling.java

import java.awt.event.*;
import java.applet.Applet;
import java.awt.Graphics;

public class ExampleEventHandling extends Applet implements MouseListener {
    StringBuffer strBuffer;
    public void init() { addMouseListener(this); strBuffer = new StringBuffer(); addItem("initializing the applet "); }
    public void start() { addItem("starting the applet "); }
    public void stop() { addItem("stopping the applet "); }
    public void destroy() { addItem("unloading the applet"); }
    void addItem(String word) { System.out.println(word); strBuffer.append(word); repaint(); }
    public void paint(Graphics g) {
        g.drawRect(0, 0, getWidth()-1, getHeight()-1);
        g.drawString(strBuffer.toString(), 10, 20);
    }
    public void mouseClicked(MouseEvent e) { addItem("mouse clicked! "); }
    // 其他 MouseListener 方法留空...
}

顯示圖片:ImageDemo.java

public class ImageDemo extends Applet {
    private Image image;
    private AppletContext context;
    public void init() {
        context = this.getAppletContext();
        String imageURL = this.getParameter("image");
        if (imageURL == null) imageURL = "java.jpg";
        try {
            URL url = new URL(this.getDocumentBase(), imageURL);
            image = context.getImage(url);
        } catch (MalformedURLException e) {
            context.showStatus("Could not load image!");
        }
    }
    public void paint(Graphics g) {
        context.showStatus("Displaying image");
        g.drawImage(image, 0, 0, 200, 84, null);
        g.drawString("www.javalicense.com", 35, 100);
    }
}

播放音頻:AudioDemo.java

public class AudioDemo extends Applet {
    private AudioClip clip;
    private AppletContext context;
    public void init() {
        context = this.getAppletContext();
        String audioURL = this.getParameter("audio");
        if (audioURL == null) audioURL = "default.au";
        try {
            URL url = new URL(this.getDocumentBase(), audioURL);
            clip = context.getAudioClip(url);
        } catch (MalformedURLException e) {
            context.showStatus("Could not load audio file!");
        }
    }
    public void start() { if (clip != null) clip.loop(); }
    public void stop() { if (clip != null) clip.stop(); }
}

AudioClip 三大方法:play()(播放一次)、loop()(循環)、stop()(停止)。

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