Ogni applet e implementato dalla creazione di una subclass della classe applet.
Classe applet
java.lang.object
java.awt.Component
java.awt.Container
java.awt.Panel
java.applet.Applet
La classe applet estende la awt.Panel che estende la awt.Container che estende la awt.Compenent da cui eredita la possibilita di disegnare e catturare gli eventi
Comportamenti di un applet, metodi primari.
public class Simple extends Applet {
....
public void init() {....}
public void start() {....}
public void stop() {....}
public void destroy() {....}
public void paint(Graphic g) {....}
......
}
es.
import java.awt.Event
...
public boolean mouseDown(Event event, int x, int y) {
addItem("click");
return true;
... }
Esempio: |
//: Simple.java import java.applet.Applet; import java.awt.Graphics; public class Simple extends Applet { StringBuffer buffer; public void init() { buffer = new StringBuffer(); addItem("init(). "); } public void start() { addItem("start(). "); } public void stop() { addItem("stop(). "); } public void destroy() { addItem("destroy()."); } void addItem(String newWord) { System.out.println(newWord); buffer.append(newWord); repaint(); } public void paint(Graphics g) { //Draw a Rectangle around the applet's display area. g.drawRect(0, 0, size().width - 1, size().height - 1); //Draw the current string inside the rectangle. g.drawString(buffer.toString(), 5, 15); } } |
Aggiungere un applet ad una pagina html
Un applet deve essere aggiunto ad una pagina html usando i tag
<APPLET CODE="NomeApplet.class WIDTH="x" HEIGHT="y">
<param> = usato per passare dati ad un applet
Attributo: CODEBASE = specifica la directory in cui si trova il bytecode (file.class)
Esempio: |
//: PassaString.java import java.applet.Applet; import java.awt.*; public class PassaString extends Applet { String text; TextField field; public void init() { field = new TextField(); field.setEditable(false); add(field); text = getParameter("TEXT"); if(text == null) { text = "Testo di default, parametro TEXT non passato"; } } public void start() { field.setText(text); repaint(); } } |
PassaString.htm
<APPLET CODE="PassaString WIDTH="128" HEIGHT="128"><PARAM NAME="TEXT" VALUE="Testo passato">
</APPLET>
Visualizzare una stringa di testo nella status bar
Con il metodo showStatus si pou visualizzare testo nella status bar.
es. per visualizzare i file che vengono caricati, quando sono molti:
showStatut("MyApplet: Loading image file" + file);
Comunicare con altri programmi
Un applet puo comunicare con altri programmi in 3 modi
1) Invocando metodi public degli altri applet nella stessa pagina
2) Tramite le API definite in java.applet per comunicare con il browser
3) Tramite le API definite in java.net per comunicare tramite la rete con altri programmi (che devono risiedere sullhost che contiene lapplet)
1- Un applet puo trovare altri applet cercandoli per nome (usando i metodi appletContext, getApplet). Per default un applet non ha un nome, ma gli puo essere specificato nel codice html nei seguenti modi:
- Con lattributo NAME specificato nel tag <applet >
es.
<applet codebase="example/" code="Sender.class" height="xxx" name="buddy">
Specificando il parametro NAME con il tag <param>
es.
<applet .......
<param NAME "name" VALUE="old pal">
per convenzione i nomi di applet sono tutti minuscoli
Un applet puo trovare tutti gli altri applet della pagina con il metodo getApplets()
ritorna una enumeration (lista) di tutti gli applet
es.
enumeration e = getAppletContext(),getApplets()
Applet receiver = null
String receiverName = nameField.getText(); //riceve il testo da cercare
receiver = getAppletContext().getApplet(receiverName);
2- Quello che il browser visualizza puo essere controllato con 2 metodi: appletContext() e showDocument().
es.
public void showDocument(java.net.URL url)
public void showDocument(java.net.URL url, String targetWindow)