Bonjour, j'ai aujourd'hui une vraie question de vrai débutant à poser :
Y a-t-il un moyen de précharcher une image, et de ne rendre la main au programme qu'une fois que c'est fait ? Car j'utilise des panneaux dont la méthode paintComponant affiche une petite image, dont l'objet correspondant a été créé dans le constructeur.
Or ces images ont tendance (environ une fois sur deux) à ne pas toutes apparaître à l'apparition de la fenêtre, mais à le faire si je la rabats et l'aggrandis (repaint, avec l'intervalle pour finir de charger). J'ai cru comprendre que le constructeur de ImageIcon chargeait complètement avant d erendre la main et que le getImage d eToolkit chargeait en arrière plan, avant de comprende l'inverse. En tout cas, j'ai tuilisé ces 2 méthodes sans remarquer de différence, et j'ai même essayer de faire une boucle avec ImageIcon :
icone = new ImageIcon(getClass().getClassLoader().getResource(add));
for(int i = 1; icone.getImageLoadStatus() != MediaTracker.COMPLETE; i++)
{
System.out.println(Integer.toString(icone.getImageLoadStatus()));
i--;
}
Ma fenêtre n'apparaissait pas, et en ajoutant le println j'ai compris que le LoadStatus restait bloqué à 2 et n'avançait pas tant que durait la boucle, qui je suppose ne devait pas laisser de temps pour charger l'image en arrière plan.
Un LoadStatus d e2 correspond à l'état ABORTED, or les images apparaissent bien avec un repaint() tardif (Pas la peine d'appeler repaint^après l'apparition de la fenêtre, c'est sans effet)
Nitruk