Affiché une image en java

Fermé
phifou - 7 sept. 2004 à 00:14
 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?
A voir également:

5 réponses

thedavix Messages postés 466 Date d'inscription mardi 21 mai 2002 Statut Membre Dernière intervention 31 août 2006 35
7 sept. 2004 à 09:44
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..."
16
j'ai trouvé mon erreur!!! je mettais photo.jpeg au lieu de photo.jpg !!!!!! quel con...
Maintenant tout marche.
12
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) ;
}
}
9
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.
4

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
2