Note ajoutée depuis : l'application convertie ici est MasterMind GUI, mon jeu en Java — d'où les pions et les thèmes dans le code. C'est le même projet dont je migrerai la couche DAO vers Hibernate l'année suivante.
Avant toute chose, c'est la première fois que nous nous tournons vers le monde des applets Java. Nous prenons le cas où nous ne désirons pas que l'applet envoie un message d'avertissement à l'utilisateur afin que nous puissions avoir accès à sa machine (pas d'applet signée !).
La transformation d'une interface GUI en applet Java
La différence fondamentale entre applet et application est l'ensemble des restrictions auxquelles est soumise l'exploitation des applets pour des raisons de sécurité. Étant donné que les applets peuvent être chargées depuis n'importe quel site web pour être exécutées sur un système client du serveur contenant l'applet, les navigateurs et les outils compatibles Java en restreignent les possibilités afin d'empêcher une « applet malfaisante » d'infliger des dommages au système utilisateur ou d'en violer la sécurité. Les restrictions portent sur les points suivants :
- Les applets ne peuvent ni lire, ni écrire sur le système de fichiers de l'utilisateur ;
- Les applets ne peuvent communiquer avec aucun autre serveur de réseau que celui sur lequel elles étaient enregistrées à l'origine ;
- Les applets ne peuvent faire marcher aucun programme sur le système de l'utilisateur ;
- Les applets ne peuvent pas charger des programmes qui résident sur la plate-forme locale.
Vous l'aurez compris, une fonction système bénigne peut être l'affichage d'une image. Lorsque vous mettez des images dans votre logiciel, vous devez les stocker quelque part dans l'ordinateur ; pour aller rechercher cette image dans l'ordinateur, vous devez utiliser une fonction système.
Exemple :
private static Image transforme_image(String chemin) {
ImageIcon pionOne = new ImageIcon(Toolkit.getDefaultToolkit().getImage(dossier + ConfigEnvironnement.getInstance().getTheme() + "/" + chemin));
Image pion = pionOne.getImage().getScaledInstance(x, y, Image.SCALE_DEFAULT);
return pion;
}
Pour être compatible avec l'applet :
private static Image transforme_image(String chemin) {
ImageIcon pionOne = new ImageIcon(dossier + ConfigEnvironnement.getInstance().getTheme() + "/" + chemin);
Image pion = pionOne.getImage().getScaledInstance(x, y, Image.SCALE_DEFAULT);
return pion;
}
L'alignement des layers peut également être différent entre l'affichage GUI logiciel et l'affichage applet.