Jimage, un composant façon jpanel qui gère une image et un mediatracker

Contenu du snippet

Ben voilà, ya deux jours je me suis mis à bosser sur les images, et je n'ai pas trouvé dans swing de classe toute faite pour afficher correctement une image (ça se trouve il y en a une queque part, mais je porte de grosses lunettes). Alors j'en ai fait une. Ca s'utilise comme un JPanel mais avec un nom de fichier en plus. Il y a aussi un MediaTracker pour maîtriser le chargement de l'image.

Source / Exemple :


import java.awt.Image;
import java.awt.Graphics;
import java.awt.Dimension;
import java.awt.MediaTracker;
import javax.swing.JPanel;

public class JImage extends JPanel
{
	private String nomFichier;
	private Image image;
	private Dimension dimImage;
	private MediaTracker tracker;

	public JImage (String nomFichier)
	{
		this.nomFichier=nomFichier;
		// bien-entendu nomFichier est un chemin absolu sans oublier les "\" de protection sous waindo
		
		image=getToolkit().getImage(nomFichier);
		// on pointe l'image

		tracker=new MediaTracker(this);
		tracker.addImage(image,0);
		// on précise au tracker qu'il doit gérer l'image à l'appel du groupe 0
		
		try{tracker.waitForID(0);} catch (InterruptedException e) {}
		// on déclenche le chargement du groupe 0 et on attend que l'image soit chargée pour passer à la suite
		
		dimImage=new Dimension(image.getWidth(this),image.getHeight(this));
		setPreferredSize(dimImage);
		// j'initialise la taille du composanr à la taille de l'image
	}

	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		g.drawImage(image,0,0,this);
	}

	public Dimension getSize()
	{
		return dimImage;
	}
}

Conclusion :


que dire de plus ?
Ah si avant de déclencher une polémique genre "Mais elle sert à rien cette classe", je précise que mon objectif c'est de me "bricoler" des classes pour développer relax, et que fatalement toutes mes classes sont inutiles parce qu'on peut tout mettre dans un main et faire aussi bien ( ma conception de l'objet est une conception pépère, je le dit haut et fort et j'en suis fier okay ?!).
Mais par contre si vous avez un moyen de faire ça plus simplement je susi preneur.
Bon celà mis à part je vais certainement revoir le tout pour gérer les exception et peut être (je dis bien peut être) faire un nouveau constructeur pour passer un MediaTracker en param, histoire coordonner les chargement de plusieurs JImages (mais ça semble mal barré.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.