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?

War es hilfreich?

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:

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

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(); }
}   
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top