Newsgroup: it.comp.java
Titolo: APPLET CHIAMA APPLET

Salve a tutti avrei da sottopporre una domanda, magari mooolto banale,
ma come faccio da un'applet a richiamare un'altra applet ??? e'
possibile ?? se si ditemi come .....
Grazie a tutti .... ciao ciao



Per essere possibile puo' esserlo oppure no, a seconda di quello che vuoi
fare.

Se intendi che un applet deve caricare un nuovo applet al suo posto
o in un altro frame o aprendo una nuova finestra, si e' possibile.

se fai this.getAppletcontext().showDocument(url_del_documento_che_contiene_lapplet
[,frame]);

puoi avviare un nuovo applet




al posto di quello corrente se non specifichi un frame, oppure



che viene eseguito insieme a quello chiamante se specifichi un frame diverso
da quello in cui e' in esecuzione il tuo.



Se invece vuoi fare in modo che due applet contemporaneamente visualizati
dal browser si parlino la risposta e' forse.

Appletcontext ha un metodo (controlla la documentazione perche' non
mi ricordo il nome) che restituisca una enumeratione degli applet che sono
in esecuzione in quell'AppletContext, quindi il tuo applet puo' chiedere
la enumeration, scorrerla finche' non trova l'applet che gli serve e poi
ci fa quello che vuole.

Il problema e' che almeno fino alle specifiche 1.1 SUN non ha dato
nessuna definizione di appletcontext, per cui dipende dal browsser. fino
ad ora ho scoperto che se tu hai 2 finestre di un o stesso browser aperte
esse sono sicuramente 2 appletcontext diversi (2 Netscape o 2 MSIE contemporaneamente). 
Se invece hai una sola finestra con 2 o piu' frames, ogni frame e' un context
per quel che riguarda MSIE, mentre non so come si comporti Netscape communicator
4.06 o superiore ( inutile perdere tempo con versioni antecedenti alla
4.06 prche' hanno la vm bacata).

Una cosa, se ti serve farli comunicare forse puoi usare delle variabili
statiche. per quel che riguarda MSIE ho visto che 2 applet riescono a condividere
delle variabili statiche anche se sono in frames diversi.

carlo



 frames diversi.
Dovrebbe essere lo stesso anche per Netscape, se ben ricordo. C'era
un interessante articolo sull'argomento, in un numero di qualche mese
fa del Doctor Dobb's Journal, intitolato "Inter Applet Communications".
Parlava appunto della possibilita' di far colloquiare tra loro
gli applet tramite le proprieta' statiche di una classe definita
allo scopo.
Se vi interessa, provate a vedere se c'e' il testo completo sul sito
del DDJ: 
http://www.ddj.com
 (non e' detto che ci sia: alcuni ci sono,
gratuitamente, altri sono a pagamento).
Ciao,
  Marina

Sicuramente c'e' un articolo del genere, oltre a quello indicato da Marina,
anche su Javaworld ( 
http://www.javaworld.com
 ) in qualche numero vecchio.
Ciao.
    Gian Luca

 dal browser si parlino la risposta e' forse.
Andare a smanettare con l'applet context o con il class loader potrebbe
risolvere qualcosa... ma c'e' una soluzione piu' semplice :)
Si chiama InfoBus ed e' fatto apposta per permettere a diversi oggetti java
(caricati nella stessa JVM, come piu' applet nella stessa pagina) di
comunicare tra loro. Purtroppo c'e' un po' di materiale da studiarsi, ma
non e' difficile. La documentazione e' (come al solito) sulle pagine di
Javasoft ( 
http://java.sun.com/beans/infobus/index.html
 ).
--
            // Alf - 
dipi...@fisica.uniud.it
          \X/ [Life sucks! Marvin the android]
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own    

 > Grazie a tutti .... ciao ciao
Effettivamente se viene lanciata una sola JVM la comunicazione via
variabili statiche è effettivamente possibile. Ma in alternativa se vuoi
qualcosa di più complicato potresti provare ad aprire un socket e fare
chiacchierare le applet in quel modo... Qualcuno ci ha già provato? ;)
Ciao
	Stefano

 serve e poi ci fa quello che vuole.
Che perņ se non mi inganno č stato deprecato per motivi di sicurezza...
Ciao,
	Stefano

Che però se non mi inganno è stato deprecato per motivi di sicurezza
AppletContext.getApplets() non e' deprecato neppure nel JDK 1.2
In effetti, la sicurezza e' garantita in altro modo. Com'e' noto le
applet non firmate non possono comunicare con server diversi da quello
da cui sono scaricate. Se fosse possibile far comunicare due applet
inserite nalla stessa pagina e scaricate da due server diversi, il
problema sarebbe risolto. Purtoppo se si tenta di farle comunicare si
ottiene solo una SecurityException - cosi' mi ha detto chi ha tentato.
In conclusione: possono comunicare solo applet scaricate dallo stesso
sito e getApplets() e' il metodo piu' semplice. E' anche disponibile
getApplet(String name): l'argomento e' il nome dato all'Applet con il
parametro NAME del tag <applet>.
Ciao.
--   o  JOB - The Java Objects Builder - Try it, it's FREE!
    o o    
http://www.uno.it/utenti/tetractys/job.html
   o o o       TETRACTYS Software 
tetr...@uno.it
  o o o o        Leonardo Boselli 
bos...@uno.it

 
Leonardo, ti dò pienamente ragione. Mi sono confuso con getServlets() :)
Abbiate pazienza, errare humanum est, ma del resto la mia non sarà né la
prima né l'ultima bufala scritta sul NG :)
Ciao,
	Stefano