Asas Applet Java


Aplet ialah program Java. Ia biasanya berjalan dalam penyemak imbas web yang didayakan Java. Kerana ia mempunyai sokongan API Java penuh, applet ialah aplikasi Java berciri penuh.

Berikut ialah perbezaan penting antara aplikasi Java kendiri dan applet:

  • Kelas applet dalam Java mewarisi kelas java.applet.Applet

  • Kelas Applet tidak mentakrifkan main(), jadi program Applet tidak akan memanggil kaedah main(),

  • Applet direka untuk dibenamkan dalam halaman HTML.

  • Apabila pengguna menyemak imbas halaman HTML yang mengandungi Applet, kod Applet dimuat turun ke mesin pengguna.

  • Untuk melihat applet memerlukan JVM. JVM boleh menjadi pemalam untuk penyemak imbas web, atau persekitaran masa jalan yang tersendiri.

  • JVM pada mesin pengguna mencipta contoh kelas applet dan memanggil pelbagai kaedah semasa kitaran hayat Applet.

  • Applet mempunyai peraturan keselamatan yang ketat yang dikuatkuasakan oleh pelayar web Mekanisme keselamatan applet dipanggil keselamatan kotak pasir.

  • Kelas lain yang diperlukan oleh applet boleh dimuat turun sebagai fail arkib Java (JAR).


Kitaran hayat Applet

Empat kaedah dalam kelas Applet memberi anda rangka kerja di mana anda boleh membangunkan program kecil:

  • init: Tujuan kaedah ini adalah untuk menyediakan sebarang permulaan yang diperlukan untuk applet anda. Kaedah ini dipanggil selepas teg param dalam teg Applet telah diproses.

  • mula: Kaedah ini dipanggil secara automatik selepas penyemak imbas memanggil kaedah init. Kaedah ini dipanggil apabila pengguna kembali ke halaman yang mengandungi Applet dari halaman lain.

  • berhenti:Kaedah ini dipanggil secara automatik apabila pengguna mengalih keluar daripada halaman yang mengandungi applet. Oleh itu, kaedah itu boleh dipanggil berulang kali dalam applet yang sama.

  • musnahkan: Kaedah ini hanya dipanggil apabila penyemak imbas ditutup seperti biasa. Oleh kerana applet hanya sah pada halaman HTML, anda tidak seharusnya terlepas sebarang sumber selepas pengguna meninggalkan halaman yang mengandungi applet

  • paint: Kaedah ini bermula( ) kaedah dipanggil serta-merta selepas itu, atau apabila applet perlu dilukis semula dalam penyemak imbas. Kaedah paint() sebenarnya mewarisi daripada java.awt.


"Hello, World" Applet:

Berikut ialah program Applet mudah HelloWorldApplet.java:

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

Pernyataan import ini akan Kelas berikut diimport ke dalam kelas applet kami:

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

Tanpa pernyataan import ini, pengkompil Java tidak dapat mengenali kelas Applet dan Grafik.


Kelas Applet

Setiap applet ialah subkelas kelas java.applet.Applet. Kelas Applet asas menyediakan kaedah untuk kelas terbitan untuk mendapatkan konteks penyemak imbas.

Kaedah ini melakukan perkara berikut:

  • Dapatkan parameter applet

  • Dapatkan lokasi rangkaian fail HTML mengandungi applet

  • Dapatkan lokasi rangkaian direktori kelas applet

  • Cetak maklumat status penyemak imbas

  • Dapatkan imej

  • dapatkan klip audio

  • mainkan klip audio

  • Laraskan applet ini Saiz

Selain itu, kelas Applet juga menyediakan antara muka untuk Viewer atau pelayar untuk mendapatkan maklumat applet dan mengawal pelaksanaan applet.

Penonton mungkin:

  • Meminta maklumat tentang pengarang applet, versi dan hak cipta

  • Meminta penerangan tentang parameter dikenali oleh applet

  • Inisialisasikan applet

  • Hancurkan applet

  • Mula laksanakan applet

  • Tamatkan pelaksanaan applet

Kelas Applet menyediakan pelaksanaan lalai bagi kaedah ini, yang boleh ditindih apabila diperlukan.

Aplet "Hello, World" ditulis mengikut piawaian. Satu-satunya kaedah yang telah ditindih ialah kaedah cat.


Memanggil Applet

Applet ialah program Java. Ia biasanya berjalan dalam penyemak imbas web yang didayakan Java. Kerana ia mempunyai sokongan API Java penuh, applet ialah aplikasi Java berciri penuh. Teg

<applet> adalah asas untuk membenamkan applet dalam fail HTML. Berikut ialah contoh memanggil applet "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>

Nota: Anda boleh merujuk pada teg HTML Applet untuk mengetahui lebih lanjut tentang cara memanggil applet daripada HTML. Atribut teg

<applet> menentukan kelas Applet untuk dijalankan. Lebar dan tinggi digunakan untuk menentukan saiz awal panel berjalan applet. Applet mesti ditutup menggunakan teg </applet>

Jika applet menerima parameter, nilai parameter perlu ditambahkan dalam teg, yang terletak di antara <applet> dan </applet>. Penyemak imbas mengabaikan teks dan teg lain antara teg applet.

Pelayar yang tidak menyokong Java tidak boleh melaksanakan <applet> dan </applet>. Oleh itu, apa-apa yang dipaparkan antara teg yang tidak berkaitan dengan applet akan kelihatan dalam penyemak imbas yang tidak menyokong Java.

Penonton atau penyemak imbas mencari kod Java terkumpul di lokasi dokumen Untuk menentukan laluan dokumen, anda mesti menggunakan atribut pangkalan kod teg <applet>

adalah seperti berikut:

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

Jika applet berada dalam pakej selain daripada pakej lalai, pakej mesti dinyatakan dalam atribut kod, contohnya:

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

Dapatkan parameter applet

Contoh berikut menunjukkan cara menggunakan respons applet untuk menetapkan parameter yang dinyatakan dalam fail. Applet ini memaparkan corak papan dam hitam dan warna kedua.

Warna kedua dan saiz setiap lajur ditentukan melalui parameter applet dalam dokumen.

CheckerApplet mendapat parameternya dalam kaedah init(). Anda juga boleh mendapatkan parameternya dalam kaedah paint(). Walau bagaimanapun, adalah mudah dan cekap untuk mendapatkan nilai pada permulaan applet dan menyimpan tetapan, dan bukannya mendapatkan nilai setiap kali ia dimuat semula.

Pemapar applet atau penyemak imbas memanggil kaedah init() setiap kali applet dijalankan. Sejurus selepas memuatkan applet, Viewer memanggil kaedah init() (Applet.init() tidak melakukan apa-apa), mengatasi pelaksanaan lalai kaedah dan menambah beberapa kod permulaan tersuai.

Kaedah Applet.getParameter() mendapat nilai parameter dengan memberikan nama parameter. Jika nilai yang diperoleh ialah nombor atau data bukan aksara lain, ia mesti dihuraikan sebagai jenis rentetan.

Contoh berikut ialah garis besar 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) {}
}

Berikut ialah kaedah init() dan kaedah parseSquareSize() persendirian kelas CheckerApplet:

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

Aplet memanggil parseSquareSize (), untuk menghuraikan parameter squareSize. parseSquareSize() memanggil kaedah perpustakaan Integer(), yang menghuraikan rentetan menjadi integer Apabila parameter tidak sah, Integer.parseInt() membuang pengecualian.

Oleh itu, kaedah parseSquareSize() juga menangkap pengecualian dan tidak membenarkan applet menerima input yang tidak sah.

Applet memanggil kaedah parseColor() untuk menghuraikan parameter warna kepada nilai Warna. Kaedah parseColor() melakukan satu siri perbandingan rentetan untuk memadankan nilai parameter dengan nama warna yang dipratentukan. Anda perlu melaksanakan kaedah ini untuk membuat applet berfungsi.


Nyatakan parameter applet

Contoh berikut ialah fail HTML dengan kelas CheckerApplet dibenamkan di dalamnya. Fail HTML menentukan dua parameter untuk applet menggunakan tag.

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

Nota: Nama parameter tidak peka huruf besar-besaran.


Tukar aplikasi kepada Applet

Tukar aplikasi Java grafik (merujuk kepada aplikasi menggunakan AWT dan program yang dilancarkan menggunakan pelancar program java) ke dalam terbenam Applet dalam halaman web adalah sangat mudah.

Berikut ialah beberapa langkah untuk menukar aplikasi kepada applet:

  • Tulis halaman HTML dengan teg yang memuatkan kod applet.

  • Tulis subkelas kelas JApplet dan tetapkan kelas kepada awam. Jika tidak, applet tidak boleh dimuatkan.

  • Hapuskan kaedah utama() aplikasi. Jangan bina tetingkap bingkai untuk aplikasi anda kerana aplikasi anda dipaparkan dalam penyemak imbas.

  • Alihkan kod permulaan dalam kaedah pembinaan tetingkap bingkai dalam aplikasi ke kaedah init() applet Anda tidak perlu membina objek applet secara eksplisit akan memanggil kaedah init( ) untuk membuat instantiate objek.

  • Alih keluar panggilan ke kaedah setSize() Untuk applet, saiz telah ditetapkan melalui parameter lebar dan ketinggian dalam fail HTML.

  • Alih keluar panggilan ke kaedah setDefaultCloseOperation(). Applet tidak boleh ditutup; ia ditamatkan apabila pelayar keluar.

  • Jika aplikasi memanggil kaedah setTitle(), hapuskan panggilan kepada kaedah ini. Applet tidak boleh mempunyai bar tajuk. (Sudah tentu anda boleh menamakan halaman web itu sendiri melalui tag tajuk html)

  • Jangan panggil setVisible(true), applet akan dipaparkan secara automatik.


Pengendalian Acara

Kelas Applet mewarisi banyak kaedah pengendalian acara daripada kelas Kontena. Kelas Container mentakrifkan beberapa kaedah, seperti processKeyEvent() dan processMouseEvent(), untuk mengendalikan jenis acara khas Terdapat juga kaedah yang menangkap semua peristiwa yang dipanggil processEvent.

Untuk membalas peristiwa, applet mesti mengatasi kaedah pengendalian peristiwa yang sesuai.

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

Panggil applet seperti berikut:

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

Pada mulanya dijalankan, applet memaparkan "memulakan applet. Memulakan applet.", dan kemudian sebaik sahaja anda mengklik segi empat tepat, "tetikus diklik" akan dipaparkan. .


Paparkan gambar

Aplet boleh memaparkan gambar dalam GIF, JPEG, BMP dan format lain. Untuk memaparkan imej dalam applet, anda perlu menggunakan kaedah drawImage() kelas java.awt.Graphics.

Contoh berikut menunjukkan semua langkah untuk memaparkan imej:

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

Panggil applet seperti berikut:

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

Mainkan audio

Aplet boleh digunakan Antara muka AudioClip dalam pakej java.applet memainkan audio. Antara muka AudioClip mentakrifkan tiga kaedah:

  • public void play(): Mainkan klip audio sekali dari mula.

  • gelung lompang awam(): Klip audio gelung

  • hentian lompang awam(): Berhenti memainkan klip audio

Untuk mendapatkan objek AudioClip, anda mesti memanggil kaedah getAudioClip() kelas Applet. Tidak kira sama ada URL menghala ke fail audio sebenar, kaedah ini akan mengembalikan hasilnya dengan serta-merta.

Fail audio tidak akan dimuat turun sehingga tiba masanya untuk memainkannya.

Contoh berikut menunjukkan semua langkah untuk memainkan audio:

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();
      }
   }
}

Panggil applet seperti berikut:

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

Anda boleh menggunakan test.wav pada komputer anda untuk menguji perkara di atas contoh.