PDA

Visualizza la versione completa : [JAVA] Ciclo di vita applet


Fox82
17-06-2004, 00:04
Ciao a tutti!

Il dubbio mi è sorto rispondendo alla domanda di un mio amico sul ciclo di vita delle applet. Per quanto ne so (studiando dalla documentazione e da vari libri) i metodi vengono chiamati come segue:

init : al caricamento dell'applet

start : dopo init e ogni volta che l'applet entra nel campo visivo del browser

stop : prima di destroy e ogni volta che l'applet esce dal campo visivo del browser (scrollo la pagina finchè l'applet scompare, riduco il browser a icona, ecc...)

destroy : quando l'applet viene definitivamente scaricata


Per dimostrarlo ho scritto il seguente codice :



import java.applet.*;
import javax.swing.*;

public class JHello extends JApplet
{
public void init()
{
getContentPane().add(new JLabel("Hello!"));
System.out.println("Init called");
}

public void start()
{
System.out.println("Start called");
}

public void stop()
{
System.out.println("Stop called");
}

public void destroy()
{
System.out.println("Destroy called");
}
}




che dovrebbe stampare sulla console di Java la varie fasi del ciclo di vita. Con appletviewer funziona tutto come previsto, ma sui browser no !

Viene chiamato init(), start() e basta, nessuna traccia nè di stop nè di start, sia riducendo a icona che scrollando, fino a che non distruggo l'applet, dove vengono effettivamente chiamati stop() e destroy(),

Ho provato su diversi browser (IE, Mozilla, Konqueror, ecc...), sempre stesso risultato.


Che dipenda dall'html (in cui metto solo <applet code ="NomeClasse">...</applet> ) ?

Potreste provare anche voi?

Grazie

Andrea1979
17-06-2004, 01:39
io ho provato su mozilla (con Windows XP Pro), il mio codice html è semplicemente



<html>
<body>
<applet code="JHello.class" width=300 height=300></applet>
</body>
</html>


ed ho ottenuto

Init called
Start called
Stop called
Destroy called


non ho provato su Internet Explorer perchè non uso la JVM con IE

Fox82
17-06-2004, 12:08
Ok, ma quando riduci il browser ad icona e poi lo ripristini ottieni
Stop called
Start called ?

Dovrebbe essere il comportamento standard di un applet !

Fox82
17-06-2004, 18:55
:quote: up

Andrea1979
17-06-2004, 22:04
no, stop e destroy mi compaiono solo alla chiusura del browser..- stop non mi compare quando minimizzo il browser o la finestra del browser perde il focus.
Ciao

Fox82
18-06-2004, 14:35
Nessun'altra idea? :dhò: :dhò:

LeleFT
18-06-2004, 16:57
Direttamente dalla documentazione.
per il metodo start():


public void start()

Called by the browser or applet viewer to inform this applet that it should start its execution. It is called after the init method and each time the applet is revisited in a Web page.
e per il metodo stop():


public void stop()

Called by the browser or applet viewer to inform this applet that it should stop its execution. It is called when the Web page that contains this applet has been replaced by another page, and also just before the applet is to be destroyed.
Non dice che questi metodi vengono chiamati quando l'applet perde o riacquista visibilità, ma quando la pagina del browser viene modificata: start() viene chiamato ogni volta che si ritorna nella pagina dell'applet, stop() quando si passa dalla pagina dell'applet ad un'altra pagina.


Ciao. :ciauz:

Fox82
19-06-2004, 01:40
Si, l'avevo letto anch'io, però utilizzando Appletviewer il funzionamento è quello che ho descritto sopra...

Loading