PDA

Voir la version complète : Java applet chargement d'images


slade
27/07/2007, 09h09
Bonjours ,
c'est la première fois que je fais du java et j'avoue que j'ai un petit problème et je ne voit pas bien d'ou il peut venir.
Voilà le code :
import java.awt.* ;
import java.awt.Event ;
import java.applet.Applet ;
public class defaut extends java.applet.Applet {
Image im;
public void init() {
int a = 20077261 ;
int b = 72631294 ;
int o = 0 ;
int c = 4320 ;
while (c<5000)
{
String d = "http://192.168.0.8/IMAGE.JPG?cidx=" ;
d += String.valueOf(a);
d += String.valueOf(b) ;
d += String.valueOf(o) ;
d += String.valueOf(c) ;
System.out.println(d) ;
im = getImage(getCodeBase(), d);
if (c==4999)
{
c = 4320 ;
}
if (c>99999)
{
c = 0 ;
b += 1 ;
}
if (b>99999999)
{
b = 0 ;
a += 1 ;
}
}

}
public void paint(Graphics g)
{
// On dessine l'image en x=0 et y=0
g.drawImage(im, 0, 0, this);
}

}

Une boucle définit le nom de l'image a afficher, mais le problème c'est que depuis que j'ai mis la boucle les images ne s'affiche plus !
je ne voit pas trop pour quoi...
peut-être que la fonction paint n'est pas appelé ?
si c'est le cas comment l'appelé ?
j'ai essayé :
im.paint(im)
paint(im)

eclipse me trouve une erreur.
Merci de votre aide.

deathangel
27/07/2007, 09h13
appelle tout simplement repaint(); sans paramètre ni rien, ca devrait marcher

slade
27/07/2007, 09h21
Merci .
Effectivement ca ne provoque pas d'erreur si tu pouvais m'expliquer pourquoi repaint() ?
Par contre ca ne regle pas mon prolbème je n'ai toujours aucune images qui s'affiche :/
Si quelqu'un a une idée.

deathangel
27/07/2007, 12h02
en fait (il me semble) le repaint envoie un message à l'OS pour dire "ma fenêtre a été modifiée", l'OS renverra alors un message à l'application pour lui dire, redessine toi en lui passant en paramètre le contexte Graphique dans lequel il doit dessiner. Ca marche bien pour les application standard, par contre pour les applet, je sais pas trop si c'est le même fonctionnement (je suis pas fan des applets :p)

slade
27/07/2007, 15h03
redessine toi en lui passant en paramètre le contexte Graphique dans lequel il doit dessiner
Est-ce que ce serait possible que tu me montre comment ? XD
je suis désolé je suis nul en java XD

deathangel
27/07/2007, 15h42
c'est automatique, en appelant repaint(), ton programme envoie un message à ton OS, ton OS, appelera tout seul la méthode paint(Graphics g) que tu as défini. C'est ce g qui correspond à ton contexte graphique, c'est tout ce qu'il y a à savoir. Tu ne peux pas en créer un comme tu veux

slade
27/07/2007, 15h59
Ha ca marche a peut près en mettant repaint() dans la fonction paint en le mettant dans le init ca ne fonctionne pas. Malheuresement maintenant ca se raffraichit (affreusement mais soit) mais ca rafraichit toujours la même image et je me tape des erreurs d'eclipse...
at java.awt.Container.update(Unknown Source)
at defaut.paint(defaut.java:39)
at java.awt.Container.update(Unknown Source)
at defaut.paint(defaut.java:39)
at java.awt.Container.update(Unknown Source)
ca doit être parcque l'image n'existe pas non ?

slade
27/07/2007, 16h12
autant pour moi ca marche toujours pas en fait ^^
il m'affiche que la dernière image de la boucle....
même avec repaint...

deathangel
27/07/2007, 18h17
Oulah, j'étais vraiment fatigué en lisant ton code. Je viens de voir pourquoi ca ne peut pas marcher.
La fonction init est appelée une seule fois avant même le dessin de l'applet, donc ta boucle ne sert à rien. Le rafraichissement n'est pas fait.
Ce qu'il te faut, c'est lancer un thread séparé qui s'occupera de changer d'image puis d'appeler un repaint.

tu as un exemple ici : http://www.brunette.brucity.be/NewBrunette/files/Java/TutJava/Deuxie11.htm

(faut vraiment que je dorme un jour ^^)

slade
29/07/2007, 14h13
ok merci beaucoup je vais regarder ca ^^