Une solution semble exister au moins avec Netscape Navigator et Appletviewer, en effet ils placent les applets dans une Frame. Il suffit donc d'utiliser <javaMethode class="java.awt.Component" methode="getParent()" /> sur l'Applet pour récupérer cette Frame et s'en servir ( éventuellement de manière récursive jusqu'à récupérer la Frame ).
Exemple :
public java.awt.Frame getFrame()Container container = this.getParent();while( container != null )if( container instanceof Frame )return( (Frame)container );container = container.getParent();return(null);<comment>Ou une erreur</comment>
Cet exemple retourne null si le parent n'est pas une <javaClass class="java.awt.Frame" />.
Il faut, dans l'applet, récupérer la page puis l'afficher, ceci pouvant être effectué suite à la pression d'un bouton.
URL recup;try<comment>récupère l'URL à partir du document courant et "page.html"</comment>recup = new URL(getDocumentBase(), "page.html");<comment>Affiche le document après avoir recupérer le contexte courant</comment>getAppletContext().showDocument(recup, option_frame);repaint();catch (MalformedURLException e)<comment>un traitement quelconque si la page n'est pas correcte</comment>
Il faut utiliser la méthode <javaMethode class="java.applet.AppletContext" methode="showStatus(java.lang.String)" /> sur un objet de type <javaClass class="java.applet.AppletContext" />.
Si les applets sont déclarées dans des frames HTML différentes :
Comme le navigateur utilise généralement une seule JVM, l'espace mémoire est partagé. Une astuce est donc alors de créer une classe ne contenant que des membres statiques et permettant l'enregistrement et la récupération d'applet. Ces membres statiques seront uniques en mémoire et donc partagés entre les applets.
Un début de structure serait :
class AppletDataBase<comment>Une structure de données permettant d'enregistrer les données</comment>static Hashtable data;<comment>Une méthode permettant de récuperer une applet grâce à son tag</comment>publicstatic Applet getApplet(String tag);<comment>Une méthode chargée d'enregistrer une applet marquée par un tag</comment>publicstaticvoid addApplet(Applet applet, String tag);
Dans les applets on peut ainsi faire l'équivalent de ce qui est fait avec l'AppletContext :
En fait pour faire marcher votre applet avec un plugin, il va falloir modifier le contenu de votre page HTML. La marche à suivre dépend de votre navigateur. Vous trouverez plus d'informations à l'adresse suivante :http://www.javasoft.com/products/plugin/1.3/docs/tags.html
Ce document issu de http://www.developpez.com est soumis à la licence GNU FDL traduit en français ici.
Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement.