English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un Applet è un programma Java. Di solito si esegue all'interno di un browser web che supporta Java. Grazie al completo supporto dell'API Java, un Applet è un'applicazione Java completa.
Ecco le differenze importanti tra un'applicazione Java indipendente e un programma applet, come mostrato di seguito:
La classe Applet in Java eredita la classe java.applet.Applet.
La classe Applet non definisce main(), quindi un programma Applet non chiama il metodo main().
Gli Applet sono progettati per essere incorporati in una pagina HTML.
Quando l'utente naviga attraverso una pagina HTML che contiene un Applet, il codice dell'Applet viene scaricato sul computer dell'utente.
Per visualizzare un Applet è necessario un JVM. Il JVM può essere un plugin del browser web o un ambiente di esecuzione indipendente.
Il JVM sul computer dell'utente crea un esempio di classe Applet e chiama vari metodi del ciclo di vita dell'Applet.
L'Applet ha regole di sicurezza rigorose imposte dai browser web, il meccanismo di sicurezza dell'Applet è noto come sicurezza sandbox.
Altre classi necessarie per l'Applet possono essere scaricate sotto forma di file Java Archivio (JAR).
I quattro metodi nella classe Applet ci forniscono una struttura su cui sviluppare piccoli programmi:
init: L'obiettivo di questo metodo è fornire qualsiasi inizializzazione necessaria per il tuo Applet. Questo metodo viene chiamato dopo che le etichette param all'interno del tag Applet sono state elaborate.
start: Questo metodo viene chiamato automaticamente dopo che il browser ha chiamato il metodo init. Quando l'utente torna alla pagina che contiene l'Applet da un'altra pagina, viene chiamato questo metodo.
stop: Quando l'utente rimuove l'Applet dalla pagina, questo metodo viene chiamato automaticamente. Pertanto, può essere chiamato ripetutamente nello stesso Applet.
destroy: Questo metodo viene chiamato solo quando il browser viene chiuso correttamente. Poiché l'Applet è efficace solo nelle pagine HTML, non dovresti dimenticare di liberare qualsiasi risorsa quando l'utente lascia la pagina che contiene l'Applet.
paint: Questo metodo viene chiamato immediatamente dopo il metodo start() o quando l'Applet deve essere ridisegnato nel browser. Il metodo paint() deriva effettivamente da java.awt.
Di seguito è riportato un semplice programma 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); } }
Queste istruzioni import includono le seguenti classi nella nostra classe Applet:
java.applet.Applet. java.awt.Graphics.
Senza queste istruzioni import, il compilatore Java non può riconoscere le classi Applet e Graphics.
Ogni Applet è una sottoclasse di java.applet.Applet, la classe di base Applet fornisce i metodi per le sottoclassi derivate, utilizzati per ottenere informazioni di contesto e servizi del browser.
Questi metodi fanno quanto segue:
Ottieni i parametri dell'Applet
Ottieni la posizione di rete del file HTML che contiene l'Applet
Ottieni la posizione di rete della directory della classe Applet
Stampare le informazioni di stato del browser
Ottieni un'immagine
Ottieni un segmento audio
Riprodurre un segmento audio
Modificare la dimensione di questo Applet
Oltre a ciò, la classe Applet fornisce un'interfaccia che permette al Viewer o al browser di ottenere informazioni sull'Applet e di controllare l'esecuzione dell'Applet.
Il Viewer potrebbe essere:
Informazioni sull'autore, la versione e i diritti d'autore dell'Applet
Descrizione dei parametri identificati dall'Applet
Inizializzare l'Applet
Distruggere l'Applet
Iniziare l'esecuzione dell'Applet
Terminare l'esecuzione dell'Applet
La classe Applet fornisce implementazioni predefinite per questi metodi, che possono essere sovrascritti quando necessario.
Gli applet "Hello, World" sono tutti scritti secondo lo standard. L'unico metodo sovrascritto è paint.
L'Applet è un programma Java. Di solito viene eseguito all'interno di un browser Web che supporta Java. Poiché ha un completo supporto per l'API Java, l'Applet è un'applicazione Java completa.
L'etichetta <applet> è la base per incorporare Applet nei file HTML. Ecco un esempio di chiamata dell'applet "Hello World";
<html> <title>The Hello, World Applet</title> <hr> <applet code="HelloWorldApplet.class" width="320" height="120"> Se il tuo browser fosse abilitato per Java, apparirebbe un "Hello, World" Il messaggio apparirebbe qui. </applet> <hr> </html>
Attenzione: Puoi fare riferimento all'etichetta Applet HTML per conoscere meglio i metodi di chiamata dell'applet da HTML.
<applet> etichetta di attributo specifica la classe Applet da eseguire. width e height vengono utilizzati per specificare la dimensione iniziale della finestra di esecuzione dell'Applet. L'Applet deve essere chiuso utilizzando l'etichetta </applet>.
Se l'Applet accetta parametri, i valori dei parametri devono essere aggiunti tra i tag <param>, che si trovano tra <applet> e </applet>. Il browser ignora il testo tra i tag applet e altre etichette.
I browser che non supportano Java non possono eseguire <applet> e </applet>. Pertanto, qualsiasi cosa sia visibile tra i tag e non abbia relazione con l'applet, è visibile nei browser che non supportano Java.
Il viewer o il browser cerca il codice Java compilato nella posizione del documento. Per specificare il percorso del documento, è necessario utilizzare l'attributo codebase del tag <applet>.
Come indicato di seguito:
<applet codebase="http://amrood.com/applets" code="HelloWorldApplet.class" width="320" height="120">
Se l'Applet si trova in un pacchetto diverso dal pacchetto predefinito, il pacchetto in cui si trova deve essere specificato nell'attributo code, ad esempio:
<applet code="mypackage.subpackage.TestApplet.class" width="320" height="120">
Esempio di come utilizzare un Applet per rispondere e impostare i parametri specificati nel file. L'Applet mostra un'immagine di scacchi neri e il secondo colore.
Il secondo colore e la dimensione di ogni colonna sono specificati dai parametri dell'Applet nel documento.
CheckerApplet ottiene i suoi parametri nel metodo init(). Può anche ottenerli nel metodo paint(). Tuttavia, è più comodo ed efficiente che l'Applet ottenga e salvi i valori delle impostazioni non ogni volta che viene aggiornato, ma una volta sola.
Il viewer di Applet o il browser chiama il metodo init() ogni volta che l'Applet viene eseguito. Dopo aver caricato l'Applet, il Viewer chiama immediatamente il metodo init() (Applet.init() non fa nulla), sovrascrive l'implementazione predefinita del metodo, aggiungendo alcuni codici di inizializzazione personalizzati.
Il metodo Applet.getParameter() ottiene il valore del parametro fornendo il nome del parametro. Se il valore ottenuto è un numero o qualsiasi altro tipo di dati non-testuali, deve essere interpretato come tipo di stringa.
Ecco una modifica dell' CheckerApplet.java:
import java.applet.*; import java.awt.*; public class CheckerApplet extends Applet { int squareSize = 50; // Inizializzare la dimensione predefinita public void init() {} private void parseSquareSize(String param) {} private Color parseColor(String param) {} public void paint(Graphics g) {} }
Di seguito sono riportati il metodo init() della classe CheckerApplet e il metodo privato 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) { // Mantenere il valore predefinito } }
L'Applet chiama parseSquareSize() per interpretare il parametro squareSize. Il metodo parseSquareSize() chiama il metodo della libreria Integer.parseInt(), che interpreta una stringa in un intero. Quando il parametro è non valido, Integer.parseInt() lancia un'eccezione.
Pertanto, il metodo parseSquareSize() cattura anche le eccezioni e non permette all'Applet di accettare input non validi.
Applet chiama il metodo parseColor() per interpretare il parametro colore in un valore Color. Il metodo parseColor() esegue una serie di confronti di stringhe per abbinare il valore del parametro con i nomi dei colori predefiniti. Devi implementare questi metodi per far funzionare l'Applet.
Esempio seguente è un file HTML che integra la classe CheckerApplet. Il file HTML specifica due parametri all'applet utilizzando il tag <param>.
<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>
Attenzione: Il nome del parametro non è sensibile alle maiuscole e minuscole.
Convertire un'applicazione Java grafica (cioè, un'applicazione che utilizza AWT e viene avviata con il programmatore java) in un applet integrato nella pagina web è molto semplice.
Di seguito sono riportati alcuni passaggi per trasformare un'applicazione in un Applet:
Scrivi una pagina HTML che contiene etichette in grado di caricare il codice dell'applet.
Scrivi una sottoclasse di JApplet e setta il tipo come public. Altrimenti, l'Applet non può essere caricato.
Elimina il metodo main() dell'applicazione. Non costruisci una finestra di frame per l'applicazione, perché la tua applicazione deve essere visualizzata nel browser.
Sposta il codice di inizializzazione del costruttore della finestra di frame dell'applicazione nel metodo init() dell'Applet. Non devi costruire esplicitamente l'oggetto Applet, il browser lo esemplificherà chiamando il metodo init().
Elimina la chiamata al metodo setSize(). Per l'Applet, la dimensione è già definita dai parametri width e height dell'HTML.
Elimina la chiamata al metodo setDefaultCloseOperation(). L'Applet non può essere chiuso, termina con l'uscita del browser.
Se l'applicazione ha chiamato il metodo setTitle(), elimina la chiamata a tale metodo. L'Applet non può avere una barra di titolo. (Certo, puoi dare un nome alla pagina web utilizzando il tag title dell'HTML)
Non chiamare setVisible(true), l'Applet è visualizzato automaticamente.
La classe Applet eredita molti metodi di gestione degli eventi dalla classe Container. La classe Container definisce diversi metodi, come ad esempio processKeyEvent() e processMouseEvent(), che gestiscono tipi di eventi speciali, e un metodo che cattura tutti gli eventi chiamato processEvent.
Per rispondere a un evento, l'Applet deve sovrascrivere il metodo di gestione degli eventi appropriato.
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("inizializzazione dell'applet "); } public void start() { addItem("avvio dell'applet "); } public void stop() { addItem("fermata dell'applet "); } public void destroy() { addItem("smontaggio dell'applet"); } void addItem(String word) { System.out.println(word); strBuffer.append(word); repaint(); } public void paint(Graphics g) { //Disegna un rettangolo attorno all'area di visualizzazione dell'applet. g.drawRect(0, 0, getWidth() - 1, getHeight() - 1); //visualizza la stringa all'interno del rettangolo. 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("cliccato con il mouse!"); } }
Ecco come chiamare questo Applet:
<html> <title>Gestione degli eventi</title> <hr> <applet code="ExampleEventHandling.class" width="300" height="300"> </applet> <hr> </html>
All'inizio, l'Applet visualizza "inizializzando l'applet. Avviando l'applet." e poi, quando fai clic sul riquadro, viene visualizzato "cliccato con il mouse".
L'Applet può visualizzare immagini in formato GIF, JPEG, BMP e altri. Per visualizzare un'immagine nell'Applet, devi utilizzare il metodo drawImage() della classe java.awt.Graphics.
Ecco un esempio che dimostra tutti i passaggi per visualizzare un'immagine:
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(); // Visualizza nella barra di stato del browser context.showStatus("Impossibile caricare l'immagine!"); } } 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>
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(); } } }
Ecco come chiamare l'applet:
<html> <title>The ImageDemo applet</title> <hr> <applet code="ImageDemo.class" width="0" height="0"> <param name="audio" value="test.wav"> </applet> <hr>
Puoi utilizzare test.wav sul tuo computer per testare l'esempio sopra.