Affiché une image en java [Fermé]

- - Dernière réponse :  X-Fan - 18 mars 2008 à 16:52
salut à tous,
j'ai un problème. Je souhaiterais affiché une image (photo.jpeg) dans mon application java mais je n'arrive pas. Par contre j'arrive à afficher des images .gif. avec les instructions suivantes:

ImageIcon a = new ImageIcon ("image.gif");
Image b = a.Image();
g.drawImage ( b, x, y, null );

lorsque je remplace image.gif par photo.jpeg, ca marche pas. Pourquoi?
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
469
Date d'inscription
mardi 21 mai 2002
Statut
Membre
Dernière intervention
31 août 2006
33
16
Merci
Salut,
écoute je sais que pour l'affichage des images en java c'est assez chiant..
la meilleures choses est de créer une class qui extends JPanel et de redefinir la méthode paint() dedans tu peux t'inspirer de ce code
private Image image = null;
public void paint(Graphics g)
	{
		super.paintComponent(g);
		image = getToolkit().getImage("adresse de l'image");
		if(image != null) // Si l'image existe, ...
		g.drawImage(image, 200, 20, this); // ... on la dessine
	}

ensuite tu n'as plus qu'à créer une instance de la classe et de l'inclure la ou tu veux que l'image soit affichée.

J'espère que ca t'aidera

David
" Many electrons died to bring you this data..."

Dire « Merci » 16

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62649 internautes nous ont dit merci ce mois-ci

12
Merci
j'ai trouvé mon erreur!!! je mettais photo.jpeg au lieu de photo.jpg !!!!!! quel con...
Maintenant tout marche.
9
Merci
ok merci, j'ai essayé avec tes conseils, ca marche avec une image.gif mais toujours pas avec une photo.jpeg . Pourtant il detecte la photo(j'ai mis un print si image != null ). POURQUOI ca marche pas!!! sniffff... Voila le programme que j'ai essayé:

import javax.swing.* ;
import java.awt.* ;
class MaFenetre extends JFrame
{ MaFenetre ()
{ setTitle ("IMAGES") ;
setSize (800, 500) ;
pan = new Panneau() ;
getContentPane().add(pan) ;
}
private JPanel pan ;
}
class Panneau extends JPanel
{ public Panneau()
{ photo = getToolkit().getImage("photo.jpeg") ;
}
public void paintComponent(Graphics g)
{ super.paintComponent(g) ;
int x=10, y=10 ;
if(photo != null)
{g.drawImage (photo, x, y, this);System.out.println("photo");}
}
private Image photo = null;
}
public class TestMenu
{ public static void main (String args[])
{ MaFenetre fen = new MaFenetre() ;
fen.setVisible(true) ;
}
}
4
Merci
Tu n'appelles pas la méthode paintComponent. Si tu veux l'appeller alors qu'elle est dans la même classe, essaie la méthode: repaint();

g c'est le contexte graphique de la chose dans quoi tu es. Dans ce cas si, c'est JFrame. Donc quand tu fais repaint(), tu appelles la méthode paintComponent avec le g du JFrame.

Je ne sais pas si c'est pareil, mais tu peux essayé de faire
Graphics g=this.getGraphics();
paintComponent(g);

J'imagine que c'est la même chose mais ce serait idiot de faire ca alors que repaint(); suffi.
2
Merci
j'essai de faire la meme chose avec ce code, mais il manque l'appel a la méthode paintComponent(elle est seulement déclarée, mais on ne l'appel jamais).

j'essai de la faire en appelant la méthode, mais je ne sais pas quoi passer en paramètre, c'est un Graphics qu'il faut, mais lequel?
je n'ai pas de Graphics...
quelqu'un sait??

merci d'avance