Charger une image                  

Charger une image

     

Jusqu'au JDK 1.3, le chargement d'une image se faisait en utilisant la méthode getImage de la classe java.awt.Toolkit. On utilisait simultanément la classe java.awt.MediaTracker, un pisteur de médias, pour surveiller le bon chargement des images. Depuis le JDK 1.5, le chargement d'une image est plus simple. Nous présentons donc cette version simple. De notre application résulte la fenêtre représenté ci-dessous :

Le dessin est la superposition de deux images, une image où on peut voir une représentation de la Lune couvrant toute la surface du conteneur et une petite image représentant la Terre. Ces deux images ont un fond transparent.

Voici le code de l'application :

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

class IHMImages extends JPanel {
	private static final long serialVersionUID = 1L;
	Image lune, terre;

	PanneauImages() {
		try {
			lune = ImageIO.read(new File("lune.gif"));
			terre = ImageIO.read(new File("world.gif"));
		}
		catch(IOException exc) {
			exc.printStackTrace();
		}
		setPreferredSize(new Dimension(200, 200));
		setBackground(Color.WHITE);
	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.drawImage(lune, 0, 0, getWidth(), getHeight(), this);
		g.drawImage(terre, 30, 30, this);
	}
}


public class AfficheImage { 
	public static void main(String[] arg) {
		JFrame fenetre = new JFrame();
                fenetre.setContentPane(new IHMImages());
		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fenetre.pack();
		fenetre.setLocation(100, 100);
		fenetre.setVisible(true);
	}
}



lune = ImageIO.read(new File("images/lune.gif"));: la méthode statique read de la classe javax.imageio.ImageIO renvoie une instance de la classe BufferedImage (qui étend la classe abstraite Image).
g.drawImage(lune, 0, 0, getWidth(), getHeight(), this); : cette méthode de la classe java.awt.Graphics reçoit en arguments une image, les coordonnées du coin supérieur gauche, les dimensions (l'image d'origine pourra être dilatée ou réduite en fonction de ces indications) et un objet d'une classe implémentant l'interface java.awt.image.ImageObserver ; l'interface ImageObserver est implémentée par toute instance de la classe Component ; elle déclare, outre des constantes, la méthode :
    public boolean imageUpdate(Image im, int drapeaux, int x, int y, int largeur, int hauteur);
Cette dernière méthode peut permettre de savoir si certaines informations concernant une image (qui peut être en cours de chargement) sont disponibles.
g.drawImage(terre, 30, 30, this); : cette seconde méthode drawImage n'a pas de paramètre pour la dimension de l'image ; l'image aura sa dimension d'origine, quelle que soit la taille de la fenêtre. D'autres jeux de paramètres sont disponibles pour cette méthode dans la classe Graphics.

© Irène Charon, Télécom ParisTech 20011