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?

Était-ce utile?

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:

http: // download.oracle.com/javase/6/docs/api/javax/swing/AbstractSpinnerModel.html#fireStateChanged ()

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(); }
}   
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top