Définition de propriétés et d`événements pour un composant

634.1/PROGRAMMATION
Définitiondepropriétésetd’événementspouruncomposant
PeterDAEHNEVersion3.1113.05.2015
LeprotocoleJavaBeansspécifiecommentdéfinirdespropriétésetdesévénementspouruncomposant,propriétésetévénementsquiserontreconnuspar
l’IDEetintégrésautomatiquementàsoninterfaceutilisateur.
Ceprotocoleestdéfiniàdeuxniveaux:
unniveaulightbasésurdesconventionsdenommageetd’héritage;
unniveaucompletbasésurladéfinitiondedifférentsclassesdupackagejava.beans.
Cedocumentdécritleprotocolelight.
Constructeur
Lecomposantdoitdisposeraumoinsduconstructeursansparamètre.
Propriétés
UnepropriétépropdetypeTexisteetestaffichéedansl’IDEsilesaccesseurssuivantsexistent:
publicvoidsetProp(Tval){...}/*Pasprésentesilapropriétéestenlectureseule*/
publicTgetProp(){...}oupublicbooleanisProp(){...}/*Possiblepourunepropriétéboolean*/
Engénéral,maiscen’estpasobligatoire,lapropriétéestimplantéeaumoyend’unevariableprivatechargéed’enmémoriserlavaleur.
Événements
1. Créerlamémoiredel’événement;ils’agitd’uneclassequidérivedejava.awt.AWTEvent.
/*Mémoiredel'événement*/
publicclassXXEventextendsjava.awt.AWTEvent{
/*Attributsetaccesseursd’informationsspécifiquesdel’événementainsiqueconstructeursadaptés.*/
publicXXEvent(Objectsource,intid){
super(source,id);
}//Constructeur
}//XXEvent
PeterDAEHNEVersion3.1113.05.2015
2. CréerleListenerquidéfinitlesnouveauxévénements(ildoitétendrel’interfacejava.util.EventListener).Sesméthodesserontlesnouveaux
événementsauxquelslecomposantseracapablederéagir.
/*Interfacedéfinissantlelistenerspécifique*/
publicinterfaceXXListenerextendsjava.util.EventListener{
voidevenement1(XXEvente);
/*...*/
voidevenementk(XXEvente);
}//XXListener
Lesévénementsevenement1,…,evenementkapparaîtrontdanslalistedesévénementsproposésparl’IDE.
SileListenerproposeplusieursévénements,créerleXXAdaptercorrespondant(cen’estpasobligatoire;ils’agitd’unebonnepratique).
3. Créerdanslecomposantluimêmelesystèmed’abonnementetdedéclenchementdesévénementsnouvellementdéfinis.
/*Listedeslistenersabonnés*/
privatejava.util.ArrayList<XXListener>XXListenerList=newjava.util.ArrayList<XXListener>();
/*Enregistrementd'unlistenerdanslalistedesabonnés.*/
publicsynchronizedvoidaddXXListener(XXListenerlistener){
XXListenerList.add(listener);
}//addXXListener
/*Retraitd'unlistenerdelalistedesabonnés.*/
publicsynchronizedvoidremoveXXListener(XXListenerlistener){
XXListenerList.remove(listener);
}//removeXXListener
/*Notificationdesévénementsàtouslesabonnés.*/
@SuppressWarnings("unchecked")
privatevoidfireXXListenerEvenement1(XXEventevent){
java.util.ArrayList<XXListener>list=(java.util.ArrayList<XXListener>)XXListenerList.clone();
for(inti=0;i<list.size();i++){
list.get(i).evenement1(event);
}
}//fireXXListenerEvenement1
PeterDAEHNEVersion3.1113.05.2015
/*...*/
@SuppressWarnings("unchecked")
privatevoidfireXXListenerEvenementk(XXEventevent){
java.util.ArrayList<XXListener>list=(java.util.ArrayList<XXListener>)XXListenerList.clone();
for(inti=0;i<list.size();i++){
list.get(i).evenementk(event);
}
}//fireXXListenerEvenementk
4. Danslecomposant,déclencherl’événementlorsqu’ilseproduit.Ils’agitengénéraldelatransformationd’unévénementoud’ungrouped’événements
existantspourlescontrôlesgraphiquesconstituantlecomposant.
XXEventevent=newXXEvent(this,java.awt.AWTEvent.RESERVED_ID_MAX+n);/*Ouautreconstructeur*/
fireXXListenerEvenementn(event);
Remarques
LescomposantsainsicrééspeuventêtreintégrésàlapalettedeNetBeans(oudetoutIDEquireconnaîtleprotocoleJavaBeans).
L’icôneassociéeaucomposantestl’icônepardéfaut: 
Lespropriétéspeuventêtreéditéesdepuisl’interfacedel’IDE.Ilyauncertainnombred’éditeursdéfinispourlestypessimples(textes,nombres,…)etles
typesdejava.awt(Color,Font,…).
LeprotocoleJavaBeanscompletpermetdedéfinirl’icônequ’onveutassocieraucomposantainsiquedemettreàdispositiondeséditeurspourdestypes
exotiques(c’estàdireducodequiseraexécutéparl’IDEetnonparl’application).
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !