Probleme de fire

Bison_Ravi_33 Messages postés 55 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 20 septembre 2004 - 6 sept. 2004 à 12:11
Bison_Ravi_33 Messages postés 55 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 20 septembre 2004 - 16 sept. 2004 à 16:26
salut tout le monde

j'ai un petit soucis avec la méthode firePropertyChange

en fait, j'utilise cette méthode pour faire passer des paramètres, qu'ils soient boolean, int, ou double.

maintenant, je voudrais faire passer un double[ ] comme un vecteur par exemple.
Mais je ne suis pas sûr de la syntaxe à utiliser...

Voici mon code, dérivé d'un code fonctionnant parfaitement avec des double

public class Transfert implements Serializable {

private PropertyChangeSupport changes = new PropertyChangeSupport(this);

private double[] vecteur = new double[3];

// initialisation du quaternion
public Transfert() {
vecteur [0] = 0;
vecteur [1] = 1;
vecteur [2] = 2;
}

public synchronized void setVecteur(int index , double[] newValue) {
if ((index<0)||(index>3)) {
throw new IllegalArgumentException("vecteur index out of bound");
}
double[] oldValue = new double[vecteur .length];

for (index=0; index<vecteur .length;index++) {
oldValue[index] = vecteur [index];
vecteur [index] = newValue[index];
changes.firePropertyChange("vecteur ",new Double(oldValue[index]), new Double(newValue[index]));
}
}
public synchronized double[] getVecteur(/*int index*/) {
return vecteur /*[index]*/;
}

public synchronized void addPropertyChangeListener (PropertyChangeListener l) {
changes.addPropertyChangeListener(l);
}
public synchronized void removePropertyChangeListener (PropertyChangeListener l) {
changes.removePropertyChangeListener(l);
}
}


mais ce code ne fonctionne pas

Est-ce que quelqu'un sait d'ou vient mon probleme ???

merci.

14 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
6 sept. 2004 à 18:40
Salut,

je comprends pas bien ton problème. Qu'est ce qui ne marche pas ?
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
6 sept. 2004 à 23:14
GodConan :clown)

ben faudrai nous dire un peut ce qui ne marhce pas ?!! ;o)
genre les msg d error .... ;o)

mais bon deja une chose me semble evidente :
tu fai un Fire ds la boucle avec des valeur diferentes sur la meem clé je trouve cela surprenant et je ne pense pas que cela soit ce que tu veuille je pense qu une clé indexé serai plus adapté aussi... ;o)
m enfin il n y a peu etre pas que cela ...

dailleur je note que ta class est serializable !!!

"PropertyChangeSupport changes " dervait donc peu etre etre transient non?!!(c pas une cose d erreur)

++
0
Bison_Ravi_33 Messages postés 55 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 20 septembre 2004
7 sept. 2004 à 21:43
effectivement je pense moi aussi que c'est le fire qui pose problème...
mais je sais pas comment le résoudre...

si on veut transférer des int par cette méthode:
changes.
changes.firePropertyChange("valeur", oldValeur, newValeur);


si on veut transférer des double:
changes.firePropertyChange("valeur", new double(oldValeur), new double(newValeur));


mais on fait comment pour des double[] ???

De plus, je ne pense pas qu'il faille que "PropertyChangeSupport changes" soit transcient... enfin ça fonctionne comme ça avec des int, des double et des booleans..
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
7 sept. 2004 à 21:54
simple : un tableau est un objet donc avec la méthode firePropertyChange qui prend en paramètre les objets

PropertyChangeSupport changes = new PropertyChangeSupport(this);
double[] olds = new double[10];
double[] news = new double[10];
changes.firePropertyChange("property", olds, news);


Et ton listener doit juste faire le cast en double[]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
7 sept. 2004 à 22:37
GodConan :clown)

Vi tu peu essayer ca .. ;o) mais ce n est plus le meme FIre ;o)
la tu change de prop qd tou le vector change alors que pour ton exemple c etait a chaque index... si tu a listener de propertychange ;o) ca n engendrera pas le meme resultat... ;o)

++
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
7 sept. 2004 à 22:40
GodConan :clown)

Vi autrement quand je te parler de cle indexé cetait ca :
changes.firePropertyChange("vecteur " + index ,new Double(oldValue[index]), new Double(newValue[index]));

;o)
0
Bison_Ravi_33 Messages postés 55 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 20 septembre 2004
8 sept. 2004 à 12:23
il est vrai que ce qui m'intéresse c'est que le prop change dès qu'un élément change, et pas uniquement quand tous les éléments du double[] changent...

j'ai essayé ton code [purple]GodConant/purple] :

public MonBean09() {
setX(0.);
setY(0.);
setZ(0.);
}

public synchronized void setVecteur(final int index, final double[] newValue) {
double[] oldValue= new double[3];
oldValue[0] = getX();
oldValue[1] = getY();
oldValue[2] = getZ();
setX(newValue[0]);
setY(newValue[1]);
setZ(newValue[2]);
changes.firePropertyChange("Vecteur"+"index",new Double(oldValue[index]), new Double(newValue[index]));
}

private void setX(final double x) { this.x=x; }
private void setY(final double y) { this.y=y; }
private void setZ(final double z) { this.z=z; }
private double getX() { return this.x; }
private double getY() { return this.y; }
private double getZ() { return this.z; }

public synchronized double[] getVecteur() {
double vecteur[] = { getX(), getY(), getZ() };
return vecteur;
}

mais ça ne fonctionne toujours pas, j'ai toujours le meme message...

vous etes sûr que ca ne vient pas de la méthode getVecteur ???
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 sept. 2004 à 13:05
GodConan :clown)

je te signal que c la 1ere foi que tu montre getVector... ;o)

et que tu cache encor pas mal de truc ;o)

menfin meme si je n aurai aps fai comme ca ;o) cela me semble correct.. ;o)

peut etre es ce un prob lier a la synchro !!?

il faudrai que tu trace ton prog ... tu as essayer de le lanceer pas à pas ?

je voi vraiment pas desoler...
0
Bison_Ravi_33 Messages postés 55 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 20 septembre 2004
8 sept. 2004 à 14:57
c'est vrai que j'ai modifié mon getVecteur() depuis le premier post, je trouve qu'il est "mieux" comme ça... par rapport au premier
public synchronized double[] getVecteur() {
return vecteur;
}


j'ai meme essayé
public synchronized double[] getVecteur(int index) {
return vecteur [index];
}

sans plus de succés... %-6

tout ce que je "cache" c'est

public synchronized void addPropertyChangeListener 
                                                                (PropertyChangeListener l) {
changes.addPropertyChangeListener(l);
}
public synchronized void removePropertyChangeListener 
                                                                (PropertyChangeListener l) {
changes.removePropertyChangeListener(l);
}

mais ces lignes étaient dans le premier post...

Alors dis-moi, comment aurais-tu fait pour le getVecteur ?

Je peux pas lancer mon programme pas-à-pas car ce bout de code est destiné à devenir un JavaBEan
(et ouais toujours ces p***** de JavaBeans !!! )

quand il est fini, je le compile, le transforme sous forme de ajr et le lad dans le BDK... donc pas moyen de le lancer avant de l'avoir importer dans le BDK...
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 sept. 2004 à 16:07
GodConan :clown)

en faite tu cahche les var x, y et z ;o)

mais bon je voi pas plus ;o)
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 sept. 2004 à 16:13
GodConan :clown)

en fait il y a une norme d utilisation des tableau pour les Bean, je ne suis pas tres abituer mais il semble kil faille 2 methode get :
une pour acceder a la ref sur le tableau (ta premier methode)
et une pour acceder a chque index (ta 2nd) la derniere ;o) n etant pas ds la norme ;o) mais bon je ne suis pas expert en la matiere...

tu peu toujour essayer de laissser un tracer ds ton prog qui fait des system.out par exemple ca peut t indiker ou il ce plante...
Ca sera deja une info de plus ;o)...
0
Bison_Ravi_33 Messages postés 55 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 20 septembre 2004
8 sept. 2004 à 17:55
mea culpa ... :blush)

c'est vrai, je vous ai caché mes x, y et z...
désolé, les voici
private double x, y, z;


Sinon, plus sérieusement, où est-ce que t'as vu qu'il fallait 2 méthodes get pour les tableaux dans les beans ??? sur le site de SUn ???

je vais mettre des tracer dans mon prog... on sait jamais
:big)
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 sept. 2004 à 21:50
GodConan :clown)

G du le lire ds un article sur les Beans .... ;o)
tu sai ;o) je lit un peu en fait... ;o) héhé Mais je n ai pas toujour le temp de pratiquer ;o)

tien j ai aussi une question !!

private void setX(final double x) { this.x=x; }

ds ce prototype a quoi te ser le 'final' ??? je suis interpeler!!
(scuse pour le non raport au forum mais je m interroge dc ;o) )
ou alors c peut etre pour faire une analogie au c++?!

autrement je n ai vraimen pas dotre idee pour ton prob ;-(
0
Bison_Ravi_33 Messages postés 55 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 20 septembre 2004
16 sept. 2004 à 16:26
En fait, le 'final' dans mon prototype vient... ben je sais plus d'ou il vient.
Je me souviens que j'ai vu ça dans un exemple, et je me suis dis : "pourquoi pas ..." mais quant à te dire de quel exemple exactement...

mais dès que je le retrouve, je te le dis...

**********************************************
L'Univers prend la forme de mes regards.
**********************************************
0
Rejoignez-nous