Applet
Applet: il termine identifica piccole applicazioni da eseguirsi
all’interno di un browser.
Una pagina web può contenere un riferimento al codice
di un applet che verrà scaricato insieme alla pagina
web.
La pagina web ha riservato uno spazio, un riquadro,
all’interno del quale sarà visualizzato il risultato
dell’esecuzione dell’applicazione.
Applet – IngSW0304 – p.1
Applet
Il browser si prenderà carico di lanciare l’esecuzione
dell’applet, dopo avere scaricato la pagina web e il
codice dell’applet.
Il browser deve essere provvisto di un Java Runtime
Environment (e quindi di una JVM) che abilita il browser
ad eseguire applicazioni web.
Applet – IngSW0304 – p.2
Applet e pannelli
Un applet è a tutti gli effetti un pannello.
Per costruire un applet è necessario definire una classe
che estenda per ereditarietà la classe JApplet del
package Swing (oppure, la classe Applet del package
awt).
La classe JApplet deriva direttamente dalla classe
JPanel e quindi non è altro che un pannello
specializzato.
Quindi: gli applet non sono applicazioni autonome, ma
sono dei pannelli che devono essere inseriti nella
finestra del browser che agisce come contenitore.
Applet – IngSW0304 – p.3
Metodi degli applet
Gli applet hanno metodi con nomi predefiniti che ne
contengono il codice d’esecuzione.
L’esecuzione di tale codice viene automaticamente gestita
dal browser, che provvede a comandare l’esecuzione
dell’applet tramite opportune invocazioni dei metodi.
init(): gioca il ruolo di costruttore e serve per
inizializzare l’applet. Una volta scaricato l’applet, viene
direttamente invocato dal browser.
paint(): analogo al metodo paintComponent() per
i componenti JPanel. Serve per disegnare sul pannello
e accetta come parametro un oggetto della classe
Graphics. Anche questo metodo viene invocato
automaticamente dal browser.
Applet – IngSW0304 – p.4
Metodi degli applet
start(): invocato automaticamente dopo la creazione
dell’applet. Usato per animazioni o per lanciare thread
(unità in esecuzione simili ai processi).
stop(): invocato automaticamente tutte le volte in cui
è necessario fermare l’esecuzione; per esempio,
quando la finestra viene ridotta a icona. Serve per
specificare le azioni da compiere quando l’applicazione
viene temporaneamente interrotta.
destroy(): viene automaticamente invocato alla
terminazione dell’applet.
Applet – IngSW0304 – p.5
Il codice HTML
Una volta compilato il file di un applet, per esempio
App1.java, otteniamo il file App1.class che sarà inserito
nel codice HTML mediante il tag APPLET:
Il file App1.class deve essere inserito in un codice HTML
in modo che il browser, caricata la pagina, carichi anche
l’applet.
Questo è ottenuto mediante il tag APPLET:
<applet code="App1.class" width=200 height=220>
</applet>
nel quale inseriamo il nome del file (.class) e le dimensioni
del frame che ospita il pannello.
Applet – IngSW0304 – p.6
Un esempio
Riprendiamo il codice dell’esempio dell’uso del componente
CheckBox (scelta delle band) e modifichiamo il codice in
modo da renderlo un applet.
Osservazioni:
Il ruolo di costruttore dell’applet è svolto da init().
I componenti devono essere aggiunti al Container e
NON all’applet.
Dobbiamo specificare esplicitamente il layout.
L’applet può essere impostato come ascoltatore degli
eventi (quindi apportiamo solo piccole modifiche al
codice). E’ comunque possibile avere un ascoltatore
degli eventi separato.
Applet – IngSW0304 – p.7
Il codice dell’applet
import
import
import
import
java.awt.*;
java.awt.event.*;
javax.swing.*;
java.applet.*;
public class AppletMolteCaselle extends JApplet
implements ItemListener{
public void init(){
txt = new JTextField("Seleziona",15);
txa = new JTextField(25);
txt.setEditable(false);
txa.setEditable(false);
ck = new JCheckBox[5];
//...
Applet – IngSW0304 – p.8
Il codice dell’applet
//...
ck[0]=new
ck[1]=new
ck[2]=new
ck[3]=new
ck[4]=new
//...
JCheckBox("Eric Clapton");
JCheckBox("Dire Straits");
JCheckBox("Aerosmith");
JCheckBox("Boston");
JCheckBox("Dave Matthews");
Applet – IngSW0304 – p.9
Il codice dell’applet
//...
for (int i=0; i<5; i++)
ck[i].addItemListener(this);
Container c = getContentPane();
c.setLayout(new GridLayout(7,1));
c.add(txt);
for (int i=0; i<5; i++) c.add(ck[i]);
c.add(txa);
}
//...
Applet – IngSW0304 – p.10
Il codice dell’applet
//...
public void itemStateChanged(ItemEvent e){
int cont = 0;
for (int i=0; i<5; i++)
if (ck[i].isSelected()) cont++;
txa.setText(cont + " elementi selezionati");}
JTextField txt,txa;
JCheckBox ck[];
}
Applet – IngSW0304 – p.11
Il codice HTML
<html>
<head>
<title>Un po’ di musica</title>
</head>
<body>
<h1>Scegli le band</h1>
<applet code="AppletMolteCaselle.class"
width=200 height=220>
</applet>
</body>
</html>
Applet – IngSW0304 – p.12
Attributi del tag APPLET
Il tag APPLET dell’HTML permette di specificare diversi
attributi.
In particolare, è possibile specificare una directory diversa
da quella contenente il file HTML per andare a recuperare il
codice dell’applet (e delle classi utilizzate da essa).
Si tratta dell’attributo codebase.
<applet code="AppletMolteCaselle.class"
codebase="MieApplet"
width=200 height=220>
</applet>
Applet – IngSW0304 – p.13
Eseguire un applet
Un applet non è eseguibile come applicazione a sé
stante, infatti non ha un main e un frame che lo
contenga.
Eclipse ci permette di eseguire un applet!
Applet – IngSW0304 – p.14