causant des mises à jour de SpinnerNumberModel même si le nombre est le même
-
25-09-2019 - |
Question
Je SpinnerNumberModel
et certains ChangeListener
s.
Mais les ChangeListeners être averti que lorsque le nombre de spinner change. Est-il possible d'initier un événement qui se propage aux ChangeListeners même si le nouveau numéro de spinner est la même que la valeur précédente?
La solution
SpinnerNumberModel envoie un événement aux auditeurs de changement enregistrés exactement ces méthodes:
1. public void setValue(Object value)
2. public void setStepSize(Number stepSize)
3. public void setMaximum(Comparable maximum)
4. public void setMinimum(Comparable minimum)
Dans chacune de ces méthodes, un événement est délivré uniquement ssi la valeur passée en paramètre diffère réellement de la valeur actuelle.
Cependant, vous pouvez écrire votre propre SpinnerModel
(par exemple par le sous-classement SpinnerNumberModel
) et tirer tous les événements que vous voulez. Si votre implémentation hérite de AbstractSpinnerModel
, comme le fait SpinnerNumberModel
, vous aurez une méthode pratique fireStateChanged
disponible pour l'envoi d'événements:
Autres conseils
Thomas m'a battu à lui, mais je suis venu à la même conclusion et voici ce que je fini par faire:
private static class SpinnerNumberModel2 extends SpinnerNumberModel
{
public SpinnerNumberModel2(int value, int minimum, int maximum, int stepSize)
{
super(value,minimum,maximum,stepSize);
}
public void fireUpdate() { super.fireStateChanged(); }
}