中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中的Applet介紹

發布時間:2020-05-23 16:48:49 來源:億速云 閱讀:266 作者:鴿子 欄目:編程語言

Applet


1.概述
請參照如上章節導航進行閱讀

Applet 是一種 Java 程序。它一般運行在支持 Java 的 Web 瀏覽器內。因為它有完整的 Java API 支持,所以 Applet 是一個全功能的 Java 應用程序。

如下所示是獨立的 Java 應用程序和 applet 程序之間重要的不同:

  • Java 中 Applet 類繼承了 java.applet.Applet
  • Applet 類沒有定義 main(),所以一個 Applet 程序不會調用 main() 方法
  • Applet 被設計為嵌入在一個 HTML 頁面
  • 當用戶瀏覽包含 Applet 的 HTML 頁面,Applet 的代碼就被下載到用戶的機器上
  • 要查看一個 Applet 需要 JVM。 JVM 可以是 Web 瀏覽器的一個插件,或一個獨立的運行時環境
  • 用戶機器上的 JVM 創建一個 Applet 類的實例,并調用 Applet 生命周期過程中的各種方法
  • Applet 有 Web 瀏覽器強制執行的嚴格的安全規則,Applet 的安全機制被稱為沙箱安全
  • Applet 需要的其他類可以用 Java 歸檔(JAR)文件的形式下載下來

2.Applet的生命周期

Applet 類中的四個方法給我們提供了一個框架,你可以在該框架上開發小程序:

  • init: 該方法的目的是為你的 Applet 提供所需的任何初始化。在 Applet 標記內的 param 標簽被處理后調用該方法。
  • start: 瀏覽器調用 init 方法后,該方法被自動調用。每當用戶從其他頁面返回到包含 Applet 的頁面時,則調用該方法。
  • stop: 當用戶從包含 Applet 的頁面移除的時候,該方法自動被調用。因此,可以在相同的 Applet 中反復調用該方法。
  • destroy: 此方法僅當瀏覽器正常關閉時調用。因為 Applet 只有在 HTML 網頁上有效,所以你不應該在用戶離開包含 Applet 的頁面后遺漏任何資源。
  • paint: 該方法在 start() 方法之后立即被調用,或者在 Applet 需要重繪在瀏覽器的時候調用。paint() 方法實際上繼承于 java.awt

3.一個簡單Applet程序

下面是一個簡單的 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);
   }
}

這些 import 語句將以下類導入到我們的 Applet 類中:

java.applet.Applet.
java.awt.Graphics.

沒有這些 import 語句,Java 編譯器就識別不了 AppletGraphics 類。

4.Applet類

每一個 Applet 都是 java.applet.Applet 類的子類,基礎的 Applet 類提供了供衍生類調用的方法,以此來得到瀏覽器上下文的信息和服務。

這些方法做了如下事情:

  • 得到 Applet 的參數
  • 得到包含 AppletHTML 文件的網絡位置
  • 得到 Applet 類目錄的網絡位置
  • 打印瀏覽器的狀態信息
  • 獲取一張圖片
  • 獲取一個音頻片段
  • 播放一個音頻片段
  • 調整此 Applet 的大小

除此之外,Applet 類還提供了一個接口,該接口供 Viewer 或瀏覽器來獲取 Applet 的信息,并且來控制 Applet 的執行。

Viewer 可能是:

  • 請求 Applet 作者、版本和版權的信息
  • 請求 Applet 識別的參數的描述
  • 初始化 Applet
  • 銷毀 Apple
  • 開始執行 Applet
  • 結束執行 Applet

Applet 類提供了對這些方法的默認實現,這些方法可以在需要的時候重寫。

"Hello,World" applet 都是按標準編寫的。唯一被重寫的方法是 paint 方法。

5.Applet的調用

Applet 是一種 Java 程序。它一般運行在支持 Java 的 Web 瀏覽器內。因為它有完整的 Java API 支持,所以 Applet 是一個全功能的 Java 應用程序。

<applet> 標簽是在HTML文件中嵌入 Applet 的基礎。以下是一個調用"Hello World" applet 的例子;

<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>

注意: 你可以參照 HTML Applet 標簽來更多的了解從 HTML 中調用 applet 的方法。

&lt;applet&gt; 標簽的屬性指定了要運行的 Applet 類。widthheight 用來指定 Applet 運行面板的初始大小。Applet 必須使用 &lt;/applet&gt; 標簽來關閉。

如果 Applet 接受參數,那么參數的值需要在 &lt;param&gt;標簽里添加,該標簽位于 &lt;applet&gt;&lt;/applet&gt; 之間。瀏覽器忽略了 applet 標簽之間的文本和其他標簽。

不支持 Java 的瀏覽器不能執行 &lt;applet&gt;&lt;/applet&gt;。因此,在標簽之間顯示并且和 applet 沒有關系的任何東西,在不支持的 Java 的瀏覽器里是可見的。

Viewer 或者瀏覽器在文檔的位置尋找編譯過的 Java 代碼,要指定文檔的路徑,得使用 &lt;applet&gt; 標簽的 codebase 屬性指定。

如下所示:

<applet codebase="http://amrood.com/applets"
code="HelloWorldApplet.class" width="320" height="120">

如果 Applet 所在一個包中而不是默認包,那么所在的包必須在 code 屬性里指定,例如:

<applet code="mypackage.subpackage.TestApplet.class"
           width="320" height="120">

6.獲得Applet參數

下面的例子演示了如何使用一個 Applet 響應來設置文件中指定的參數。該 Applet 顯示了一個黑色棋盤圖案和第二種顏色。

第二種顏色和每一列的大小通過文檔中的 Applet 的參數指定。

CheckerAppletinit() 方法里得到它的參數。也可以在 paint() 方法里得到它的參數。然而,在 Applet 開始得到值并保存了設置,而不是每一次刷新的時候都得到值,這樣是很方便,并且高效的。

Applet viewer 或者瀏覽器在 Applet 每次運行的時候調用 init() 方法。在加載 Applet 之后,Viewer 立即調用 init() 方法(Applet.init()什么也沒做),重寫該方法的默認實現,添加一些自定義的初始化代碼。

Applet.getParameter() 方法通過給出參數名稱得到參數值。如果得到的值是數字或者其他非字符數據,那么必須解析為字符串類型。

下例是 CheckerApplet.java 的修改:

import java.applet.*;
import java.awt.*;
public class CheckerApplet extends Applet
{
   int squareSize = 50;// 初始化默認大小
   public void init () {}
   private void parseSquareSize (String param) {}
   private Color parseColor (String param) {}
   public void paint (Graphics g) {}
}

下面是 CheckerApplet 類的 init() 方法和私有的 parseSquareSize() 方法:

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) {
     // 保留默認值
   }
}

Applet 調用 parseSquareSize(),來解析 squareSize 參數。parseSquareSize() 調用了庫方法 Integer. parseInt() 該方法將一個字符串解析為一個整數,當參數無效的時候,Integer.parseInt() 拋出異常。

因此,parseSquareSize() 方法也是捕獲異常的,并不允許 Applet 接受無效的輸入。

Applet 調用 parseColor() 方法將顏色參數解析為一個 Color 值。parseColor() 方法做了一系列字符串的比較,來匹配參數的值和預定義顏色的名字。你需要實現這些方法來使 Applet 工作。

7.指定Applet參數

如下的例子是一個 HTML 文件,其中嵌入了 CheckerApplet 類。HTML文件通過使用 &lt;param&gt; 標簽的方法給 applet 指定了兩個參數。

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

注意: 參數名字大小寫不敏感。

8.應用程序轉換成Applet

將圖形化的 Java 應用程序(是指,使用 AWT 的應用程序和使用 Java 程序啟動器啟動的程序)轉換成嵌入在web頁面里的 applet 是很簡單的。

下面是將應用程序轉換成 Applet 的幾個步驟:

  • 編寫一個 HTML 頁面,該頁面帶有能加載 applet 代碼的標簽。
  • 編寫一個 JApplet 類的子類,將該類設置為 public。否則,Applet 不能被加載。
  • 消除應用程序的 main() 方法。不要為應用程序構造框架窗口,因為你的應用程序要顯示在瀏覽器中。
  • 將應用程序中框架窗口的構造方法里的初始化代碼移到 Appletinit() 方法中,你不必顯示的構造 Applet 對象,瀏覽器將通過調用 init() 方法來實例化一個對象。
  • 移除對 setSize() 方法的調用,對于 Applet 來講,大小已經通過 HTML 文件里的 widthheight 參數設定好了。
  • 移除對 setDefaultCloseOperation() 方法的調用。Applet 不能被關閉,它隨著瀏覽器的退出而終止。
  • 如果應用程序調用了 setTitle() 方法,消除對該方法的調用。applet 不能有標題欄。(當然你可以給通過 htmltitle 標簽給網頁自身命名)
  • 不要調用 setVisible(true), Applet 是自動顯示的。

9.事件處理

Applet 類從 Container 類繼承了許多事件處理方法。Container 類定義了幾個方法,例如:processKeyEvent()processMouseEvent(),用來處理特別類型的事件,還有一個捕獲所有事件的方法叫做 processEvent

為了響應一個事件,Applet 必須重寫合適的事件處理方法。

import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
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) {
         //Draw a Rectangle around the applet's display area.
        g.drawRect(0, 0,
                      getWidth() - 1,
                      getHeight() - 1);

         //display the string inside the rectangle.
        g.drawString(strBuffer.toString(), 10, 20);
    }

    public void mouseEntered(MouseEvent event) {
    }
    public void mouseExited(MouseEvent event) {
    }
    public void mousePressed(MouseEvent event) {
    }
    public void mouseReleased(MouseEvent event) {
    }

    public void mouseClicked(MouseEvent event) {
         addItem("mouse clicked! ");
    }
}

如下調用該 Applet

<html>
<title>Event Handling</title>
<hr>
<applet code="ExampleEventHandling.class"
width="300" height="300">
</applet>
<hr>
</html>

最開始運行,Applet 顯示 "initializing the applet. Starting the applet.",然后你一點擊矩形框,就會顯示 "mouse clicked" 。

10.顯示圖片

Applet 能顯示 GIF, JPEG, BMP 等其他格式的圖片。為了在 Applet 中顯示圖片,你需要使用 java.awt.Graphics 類的 drawImage() 方法。

如下實例演示了顯示圖片的所有步驟:

import java.applet.*;
import java.awt.*;
import java.net.*;
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)
      {
         e.printStackTrace();
         // Display in browser status bar
         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);
   } 
}

如下調用該 applet

<html>
<title>The ImageDemo applet</title>
<hr>
<applet code="ImageDemo.class" width="300" height="200">
<param name="image" value="java.jpg">
</applet>
<hr>
</html>

11.播放音頻

Applet 能通過使用 java.applet 包中的 AudioClip 接口播放音頻。AudioClip 接口定義了三個方法:

  • public void play(): 從一開始播放音頻片段一次
  • public void loop(): 循環播放音頻片段
  • public void stop(): 停止播放音頻片段

為了得到 AudioClip 對象,你必須調用 Applet 類的 getAudioClip() 方法。無論 URL 指向的是否是一個真實的音頻文件,該方法都會立即返回結果。

直到要播放音頻文件時,該文件才會下載下來。

如下實例演示了播放音頻的所有步驟:

import java.applet.*;
import java.awt.*;
import java.net.*;
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)
      {
         e.printStackTrace();
         context.showStatus("Could not load audio file!");
      }
   }
   public void start()
   {
      if(clip != null)
      {
         clip.loop();
      }
   }
   public void stop()
   {
      if(clip != null)
      {
         clip.stop();
      }
   }
}

如下調用 applet

<html>
<title>The ImageDemo applet</title>
<hr>
<applet code="ImageDemo.class" width="0" height="0">
<param name="audio" value="test.wav">
</applet>
<hr>

你可以使用你電腦上的 test.wav 來測試上面的實例。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苏尼特右旗| 红安县| 平顶山市| 若尔盖县| 同仁县| 漯河市| 宁海县| 和硕县| 大方县| 静海县| 南丰县| 屯门区| 曲周县| 湘乡市| 许昌市| 定西市| 应用必备| 绥化市| 安丘市| 汾西县| 宜春市| 麻城市| 平果县| 武冈市| 大余县| 建湖县| 城市| 日土县| 忻城县| 正阳县| 安图县| 海原县| 寿光市| 星子县| 吉木萨尔县| 柞水县| 东至县| 聂拉木县| 延津县| 金秀| 辽宁省|