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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 093 fois - Téléchargée 27 fois

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

Ajouter un commentaire

Commentaires

lafoune2
Messages postés
26
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
22 juillet 2004
-
mais si elle est bien ta classe....
PijanaKrava
Messages postés
26
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
23 décembre 2004
-
ben c'est une petite classe utilitaire sympathique. De +, j'ai aussi pour habitude de découper les tâches en plusieurs micro tâches : c'est + clair de séparer les choses ;)
Twinuts
Messages postés
5337
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
24 juillet 2019
82 -
franchement.....................si tu poste une source, met une vraie pasque la....... rien que le path de l'image c un peu bidon et pour les exception c pire je crois
bref la note c juste pour l'effort de l'avoir "ecrite" et posté
cs_Dobel
Messages postés
333
Date d'inscription
dimanche 25 mai 2003
Statut
Membre
Dernière intervention
23 novembre 2009
-
-> Twinuts :
on dirait bien que l'aimabilité, c'est pas trop ton fort
le but du forum est avant tout l'entraide, pas l'enfonce
ca commence à devenir agacant
Les exemples de bases ne sont jamais de trop, peut importe ce qui est autour
la charte sous ce que je tape me dit de "rester calme et courtois", tu ne rends pas les choses faciles
lafoune2
Messages postés
26
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
22 juillet 2004
-
-> Dobel :
totalement d'accord avec toi....

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.