Ne pouvoir instancier une classe qu'une seule fois [Résolu]

abderrahman86
Messages postés
24
Date d'inscription
vendredi 20 janvier 2006
Dernière intervention
5 mai 2009
- 20 avril 2009 à 11:55 - Dernière réponse : abderrahman86
Messages postés
24
Date d'inscription
vendredi 20 janvier 2006
Dernière intervention
5 mai 2009
- 20 avril 2009 à 17:43
Bonjour ,



On est en train de développer une application Windows en java dont j’ai crée une classe qui nous permettrons la gestion d’accès aux images.



Ma question c’est comment faire pour n’instancier cette classe qu’une seule fois ?



J’ai googlé et j’ai trouvé qu’il faut utiliser le Desing Pattern Singleton.




<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>



Voici le code de ma classe:








public








class


maClasse{
      






public







static







final


String



IMAGE_AJOUTER


=


"/ajouter.png"

;

}

instanciation de ma classe:


addButton.setIcon(
new ImageIcon(getClass().getResource(maClasse.
IMAGE_AJOUTER)));

Cordialement
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
abderrahman86
Messages postés
24
Date d'inscription
vendredi 20 janvier 2006
Dernière intervention
5 mai 2009
- 20 avril 2009 à 17:43
3
Merci
bonjour
voci la solution qu'on implimenté:

private
static Map<String, ImageIcon>
imgIc;





public







static


ImageIcon img(String image) {















if


(



imgIc






null


) {




imgIc


=



new


HashMap<String, ImageIcon>();}

ImageIcon imgi=




imgIconsMap


.get(image);




if


(imgi==



null


) {imgi=




new


ImageIcon(maClasse.



class


.getResource(image));




imgIc


.put(image, imgi);}




return







imgi


;}

instanciation de maClasse:

bouton

.setIcon(maClasse.img(maClasse.
IMAGE_AJOUTER
));

Merci bcp  DARKSIDIOUS.



 

Merci abderrahman86 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de abderrahman86
cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
- 20 avril 2009 à 12:04
0
Merci
Salut,

Ce que tu fais là n'a rien d'un singleton il s'agit juste de déclarer une constante publique !

Voici un singleton :

public class Singleton() {

protected static instance;

private Singleton() {
}

public static Singleton getInstance() {

if (instance == null) {
instance = new Singleton();
}
return Singleton;

}

}

Et pour "instancier" ta classe :
Singleton classeUnique = Singleton.getInstance();

Et pour tester :
Singleton classeUnique2 = Singleton.getInstance();
System.out.println(classeUnique == classeUnique2); // les deux objets pointent sur la même instance de classe.
Commenter la réponse de cs_DARKSIDIOUS
abderrahman86
Messages postés
24
Date d'inscription
vendredi 20 janvier 2006
Dernière intervention
5 mai 2009
- 20 avril 2009 à 12:22
0
Merci
Salut,



Merci pour la réponse 



Oui moi je n’ai pas utilisé le Singleton.



Le problème se pose dans ce bout de code



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

 addButton.setIcon(
new ImageIcon(getClass().getResource(maClasse.
IMAGE_AJOUTER)));






Il est utilisé dans pas mal de classe, a cahque fois en crée un new ImageIcon(getClass().getResource(maClasse.IMAGE_AJOUTER
)).



Est qu’il y a une solution ?




 
Commenter la réponse de abderrahman86
cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
- 20 avril 2009 à 12:30
0
Merci
Et bien avec ta solution de l'image stockée en constante :
Au lieu de :
public class maClasse{
public static final String IMAGE_AJOUTER = "/ajouter.png" ;
}

fais :
public class maClasse{
public static final Image IMAGE_AJOUTER = new ImageIcon(getClass().getResource(maClasse.IMAGE_AJOUTER));
}

addButton.setIcon(maClasse.IMAGE_AJOUTER);
Commenter la réponse de cs_DARKSIDIOUS

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.