verursacht Updates zu SpinnerNumberModel auch wenn die Zahl der gleiche ist
-
25-09-2019 - |
Frage
Ich habe ein SpinnerNumberModel
und einige ChangeListener
s.
Aber die Change nur benachrichtigt, wenn die Spinner Nummer ändert. Gibt es eine Möglichkeit, ein Ereignis zu initiieren, dass pflanzt sich zu den Change selbst wenn die neue Spinner Anzahl der gleiche wie der vorherige Wert ist?
Lösung
SpinnerNumberModel sendet ein Ereignis an den registrierten Änderung Zuhörer in genau diese Methoden:
1. public void setValue(Object value)
2. public void setStepSize(Number stepSize)
3. public void setMaximum(Comparable maximum)
4. public void setMinimum(Comparable minimum)
Bei jedem dieser Verfahren wird ein Ereignis nur genau dann, wenn der Wert ausgegeben als Parameter übergeben tatsächlich unterscheidet sich von dem aktuellen Wert.
Sie können jedoch Ihre eigene SpinnerModel
schreiben (zum Beispiel durch Subklassen SpinnerNumberModel
) und feuern alle die Ereignisse, die Sie wollen. Wenn Ihre Implementierung erbt von AbstractSpinnerModel
, wie SpinnerNumberModel
tut, werden Sie eine handliche fireStateChanged
Methode zum Senden von Veranstaltungen zur Verfügung haben:
Andere Tipps
Thomas hatte mich zu, aber ich kam zu dem gleichen Schluss und hier ist das, was ich am Ende tun:
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(); }
}