Les images... [JAVA] - Programmation
Marsh Posté le 19-02-2002 à 16:28:16
Tu crées un objet image:
Image image;
et tu fais par exemple image = getToolkit().getImage("popo.jpg" );
Là elle sera chargée (tu peux surveiller le chargement avec un MediaTracker, c'est facile à utiliser et très pratique)
Ensuite tu l'affiches dans ton application (dans ton interface graphique, dans ta méthode paintComponent() en général). C'est plus pratique d'utiliser carrément un container...
Voilà voilà...
y'a un cours très bien fait sur le net, que tu trouves facilement en tapant sous google cours java enst Brest ...
Marsh Posté le 19-02-2002 à 16:44:03
merci je vais voir ca ! je connaissait pas le getToolKit.
pendant ce temps j'ai fait qq tests avec les ImageIcon, et quand je la met dans un JScrolPane ca scrolle jamais (les barres apapraissent pas), comment se afit t'il ?
Marsh Posté le 19-02-2002 à 17:20:10
J'arrive a afficher l'image ok,mais le pb c'est que elle apparait pas tt de suite, ca rame ; j'ai mis un print dans le PaintComponent pour voir, et en fait ca m'a permis de voir qu'il execute le paint component beaucoup de fois en échouant avant de réussir a afficher l'image !! pourquoi ?
et aussi j'arrive toujours pas a faire scroller...
Marsh Posté le 19-02-2002 à 17:28:32
Ton machin essaie d'afficher l'image alors qu'elle est pas finie de charger, c'est pour ça, qu'il plante plusieurs fois avant d'y arriver...
Le code suivant est celui d'une classe qui affiche bêtement une image....
Tu pourrais peut être utiliser ça pour dessiner ton fond, puis ajouter des drawImage(mapetiteimage, posX, poxY);,
dans la méthode paint(Graphics) pour dessiner tes petites images dessus..Ca devrait marcher, non?
import java.awt.*;
import java.net.URL;
public class ImageLabel extends Canvas {
private Image image;
public ImageLabel(URL imageurl) {
super();
image = Toolkit.getDefaultToolkit().getImage(imageurl);
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image, 0);
try {
tracker.waitForAll(1000);
} catch(InterruptedException e) {
}
setSize(new Dimension(image.getWidth(this), image.getHeight(this)));
}
public int getImageWidth() {
return image.getWidth(this);
}
public int getImageHeight() {
return image.getHeight(this);
}
public void paint(Graphics g) {
g = getGraphics();
g.drawImage(image, 0, 0, this);
}
}
Marsh Posté le 19-02-2002 à 17:38:19
ok merci mais comment ca se fait que l'image soit méchament lente a se charger alors que c'est une image toute conne (jpeg 1024*768) et que si j'utilise imageicon c'est instantanné (avec la même image).
et pas d'idées pr le scroll ..?
Marsh Posté le 19-02-2002 à 17:41:46
Bah, avec ma classe, tu obtiens un objet qui hérite de Component, donc, tu peux le mettre dans un JScrollPane...
Sinon, ça charge plus lentement, sans doute parce que c'est une classe qui est au départ faite pour télécharger des images depuis le réseau, donc, je passe par un objet URL....peut être que ça ralentit le tout???
Marsh Posté le 19-02-2002 à 17:44:39
ok, si c'est trop lent je vais utiliser ImageIcon alors (sauf si trop de restrictions...).
Marsh Posté le 19-02-2002 à 17:47:49
Désolé de pas pouvoir te renseigner plus : applet oblige, j'ai pas fait de Swing depuis un bon moment!!
Marsh Posté le 19-02-2002 à 18:36:25
un truc zarbi c'est que j'arrive pas a avoir le scroll, que ce soit avec ton Canvas ou cvomme je faisait avant avec JPanel. pourtant j'oublie pas le setSize.
Pour ce qui est de la rapidité de Image c'est vraiment bizar desfois c instantanné desfois 20 secondes !!!
Marsh Posté le 19-02-2002 à 23:57:06
un p'tit up car cette histoire de scroll faut que je trouve un moyen !
Marsh Posté le 19-02-2002 à 16:09:42
Ce que je veut c'est dans mon appli avoir un plan avec des trucs dessus, cad une grande image avec des petites dessus.
Malheureusement j'ai jamais manipulé les images en java je sais pas comment ca marche
J'ai bien fouillé dans l'aide, ca m'a guidé vers les classes Image et BufferedImage, mais impossible de trouver où on défini le fichier source de l'image !
Sinon on peut peut être utiliser des ImageIcon, ca a l'air plus simple ? mais comment initialiser le "Graphics"...
Si vous aviez des explications ou exemples de code ca serait cool parce que là je cale...