Cette page propose une nouvelle technique utilisant les fonctionnalités de java 1.5 pour gérer les ressource de type images efficacement.
La gestion des images en java est une problématique classique qui peut s'avérer fastidieuse si on ne dispose pas d'utilitaire qui effectue la recherche classpath. C'est pourquoi je vous propose une méthode novatrice ayant une utilisation optimale de mémoire: comme les strings chaque instances d'ImageIcon sera un singleton de plus la technique que je propose élimine les difficultés de gestion du classpath.
Comment faire:
* Mettre les fichier png dans un package _____.swing.images. Mettre seulement les fichiers utilisés par l'application et les rajoutés au fur et a mesure.
* Faire une classe final nommé IconsRessources
* Ajouter une champs final public static par icone
package ca.usherbrooke.nicolas.swing.images;
1 package ca.usherbrooke.nicolas.swing.images;
2
3 import javax.swing.ImageIcon;
4
5 public final class IconRessources {
6 public final static ImageIcon OK_ICON=
7 new ImageIcon(IconRessources.class.getResource("OK.png"));
8 public final static ImageIcon NOT_OK_ICON=
9 new ImageIcon(IconRessources.class.getResource("notOK.png"));
10
11 }
* Pour l'utilisation il suffit de faire un import static de l'icon.
import static ca.usherbrooke.nicolas.swing.images.IconRessources.OK_ICON;
import static ca.usherbrooke.nicolas.swing.images.IconRessources.NOT_OK_ICON;
* Et de l'utiliser comme si la constante était défini dans le fichier
Conséquances:
Les icônes sont tous chargé une seul fois par le classloader au moment de la première référence vers la classe IconRessources
Les icônes seront alloué dans la parti permanente de la mémoire java. Elles ne dérangeront donc pas inutilement le GC
L'utilisation d'une icône devient simple.
Les problématiques de classpath son résolue sans avoir recours à une solution au allures ésotérique.
