工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java - アプレットの基本

アプレット Web ブラウザーで実行される Java プログラムです。アプレットは Java API 全体を自由に使用できるため、完全に機能する Java アプリケーションにすることができます。

アプレットとスタンドアロン Java アプリケーションの間には、次のような重要な違いがいくつかあります −

アプレットのライフサイクル

Applet クラスの 4 つのメソッドは、本格的なアプレットを構築するためのフレームワークを提供します −

「Hello, World」アプレット

以下は、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 ステートメントは、クラスをアプレット クラスのスコープに取り込みます −

これらの import ステートメントがないと、Java コンパイラは、アプレット クラスが参照するクラス Applet と Graphics を認識できません。

アプレット クラス

すべてのアプレットは java.applet.Applet クラスの拡張です .基本アプレット クラスは、ブラウザ コンテキストから情報とサービスを取得するために派生アプレット クラスが呼び出すことができるメソッドを提供します。

これらには、次のことを行うメソッドが含まれます −

さらに、Applet クラスは、ビューアまたはブラウザがアプレットに関する情報を取得し、アプレットの実行を制御するためのインターフェイスを提供します。視聴者は −

Applet クラスは、これらの各メソッドのデフォルトの実装を提供します。これらの実装は、必要に応じてオーバーライドできます。

「Hello, World」アプレットはこのまま完成です。オーバーライドされる唯一のメソッドはペイント メソッドです。

アプレットの呼び出し

アプレットは、HTML ファイルにディレクティブを埋め込み、アプレット ビューアまたは Java 対応ブラウザでファイルを表示することによって呼び出すことができます。

タグは、HTML ファイルにアプレットを埋め込むための基本です。以下は、「Hello, World」アプレットを呼び出す例です −

<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 からアプレットを呼び出す方法については、HTML アプレット タグを参照してください。

タグの code 属性は必須です。実行する Applet クラスを指定します。アプレットが実行されるパネルの初期サイズを指定するには、幅と高さも必要です。アプレット ディレクティブは タグで閉じる必要があります。

アプレットがパラメーターを受け取る場合、 の間に タグを追加することで、パラメーターに値を渡すことができます。ブラウザは、アプレット タグ間のテキストやその他のタグを無視します。

Java 非対応のブラウザーは、 および を処理しません。したがって、アプレットに関係なく、タグの間に表示されるものはすべて、Java 対応でないブラウザーで表示されます。

ビューアまたはブラウザは、ドキュメントの場所でコンパイルされた Java コードを探します。それ以外を指定するには、次のように タグの codebase 属性を使用します −

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

アプレットがデフォルト以外のパッケージに存在する場合、保持パッケージは、ピリオド文字 (.) を使用して code 属性で指定し、パッケージ/クラス コンポーネントを区切る必要があります。たとえば-

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

アプレット パラメータの取得

次の例は、ドキュメントで指定されたセットアップ パラメータにアプレットを応答させる方法を示しています。このアプレットは、黒と 2 番目の色の市松模様を表示します。

2 番目の色と各正方形のサイズは、ドキュメント内のアプレットにパラメーターとして指定できます。

CheckerApplet は init() メソッドでパラメータを取得します。 paint() メソッドでパラメータを取得することもできます。ただし、更新のたびにではなく、アプレットの開始時に値を取得して設定を保存する方が便利で効率的です。

アプレット ビューアまたはブラウザは、実行する各アプレットの init() メソッドを呼び出します。ビューアーは、アプレットをロードした直後に init() を 1 回呼び出します。 (Applet.init() は何もしないように実装されています。) デフォルトの実装をオーバーライドして、カスタムの初期化コードを挿入します。

Applet.getParameter() メソッドは、パラメータの名前を指定してパラメータを取得します (パラメータの値は常に文字列です)。値が数値またはその他の非文字データである場合、文字列を解析する必要があります。

以下は CheckerApplet.java のスケルトンです −

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

public class CheckerApplet extends Applet {
   int squareSize = 50;   // initialized to default size
   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) {
      // Let default value remain
   }
}

アプレットは parseSquareSize() を呼び出して、squareSize パラメータを解析します。 parseSquareSize() は、文字列を解析して整数を返すライブラリ メソッド Integer.parseInt() を呼び出します。 Integer.parseInt() は、引数が無効な場合は常に例外をスローします。

したがって、parseSquareSize() は、アプレットが不正な入力で失敗するのを許可するのではなく、例外をキャッチします。

アプレットは parseColor() を呼び出して、color パラメータを解析して Color 値に変換します。 parseColor() は一連の文字列比較を行い、パラメータ値を定義済みの色の名前と照合します。このアプレットを機能させるには、これらのメソッドを実装する必要があります。

アプレット パラメータの指定

以下は、CheckerApplet が埋め込まれた HTML ファイルの例です。 HTML ファイルは、 タグを使用して、両方のパラメータをアプレットに指定します。

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

注意 − パラメータ名は大文字と小文字を区別しません。

アプレットへのアプリケーションの変換

グラフィカル Java アプリケーション (つまり、AWT を使用し、Java プログラム ランチャーで開始できるアプリケーション) を Web ページに埋め込むことができるアプレットに変換するのは簡単です。

以下は、アプリケーションをアプレットに変換するための具体的な手順です。

    <リ>

    アプレット コードをロードするための適切なタグを含む HTML ページを作成します。

    <リ>

    JApplet クラスのサブクラスを提供します。このクラスを公開します。そうしないと、アプレットをロードできません。

    <リ>

    アプリケーションの main メソッドを削除します。アプリケーションのフレーム ウィンドウを作成しないでください。アプリケーションがブラウザ内に表示されます。

    <リ>

    初期化コードをフレーム ウィンドウ コンストラクターからアプレットの init メソッドに移動します。アプレット オブジェクトを明示的に構築する必要はありません。ブラウザがインスタンスを作成し、init メソッドを呼び出します。

    <リ>

    setSize の呼び出しを削除します。アプレットの場合、サイジングは HTML ファイルの幅と高さのパラメータで行われます。

    <リ>

    setDefaultCloseOperation への呼び出しを削除します。アプレットを閉じることはできません。ブラウザが終了すると終了します。

    <リ>

    アプリケーションが setTitle を呼び出す場合は、メソッドへの呼び出しを削除します。アプレットにタイトル バーを含めることはできません。 (もちろん、HTML タイトル タグを使用して、Web ページ自体にタイトルを付けることができます。)

    <リ>

    setVisible(true) を呼び出さないでください。アプレットが自動的に表示されます。

イベント処理

アプレットは、Container クラスから一連のイベント処理メソッドを継承します。 Container クラスは、特定のタイプのイベントを処理するための processKeyEvent や processMouseEvent などのいくつかのメソッドを定義し、次に processEvent と呼ばれる 1 つのキャッチオール メソッドを定義します。

イベントに反応するために、アプレットは適切なイベント固有のメソッドをオーバーライドする必要があります。

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 apple ");
   }

   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! ");
   }
}

さて、このアプレットを次のように呼び出しましょう −

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

最初に、アプレットは「アプレットを初期化しています。アプレットを開始しています」と表示します。次に、長方形の内側をクリックすると、「mouse clicked」も表示されます。

画像の表示

アプレットは、GIF、JPEG、BMP などの形式の画像を表示できます。アプレット内に画像を表示するには、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);
   }  
}

さて、このアプレットを次のように呼び出しましょう −

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

オーディオの再生

アプレットは、java.applet パッケージの AudioClip インターフェイスによって表されるオーディオ ファイルを再生できます。 AudioClip インターフェイスには、以下を含む 3 つのメソッドがあります-

    <リ>

    public void play() − オーディオ クリップを最初から 1 回再生します。

    <リ>

    public void loop() − オーディオ クリップを継続的に再生します。

    <リ>

    public void stop() − オーディオ クリップの再生を停止します。

AudioClip オブジェクトを取得するには、Applet クラスの getAudioClip() メソッドを呼び出す必要があります。 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();
      }
   }
}

さて、このアプレットを次のように呼び出しましょう −

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

上記の例をテストするには、PC で test.wav を使用できます。


Java

  1. Java オペレーター
  2. Java コメント
  3. Java for-each ループ
  4. Java 文字列
  5. Java インターフェイス
  6. Java匿名クラス
  7. Java try-with-resources
  8. Java アノテーション
  9. Java アサーション
  10. Java ベクトル
  11. Java - アプレットの基本