вызывая обновления SpinnerNumberModel, даже если число совпадает - PullRequest
0 голосов
/ 09 декабря 2010

У меня есть SpinnerNumberModel и некоторые ChangeListener с.

Но ChangeListeners получают уведомление только при изменении номера счетчика. Есть ли способ инициировать событие, которое распространяется на ChangeListeners, даже если новый номер счетчика совпадает с предыдущим значением?

Ответы [ 2 ]

3 голосов
/ 09 декабря 2010

SpinnerNumberModel отправляет событие зарегистрированным слушателям изменений именно в этих методах:

1. public void setValue(Object value)
2. public void setStepSize(Number stepSize)
3. public void setMaximum(Comparable maximum)
4. public void setMinimum(Comparable minimum)

В каждом из этих методов событие выдается только тогда, когда значение, переданное, поскольку параметр фактически отличается от текущего значения.

Однако вы можете написать свой собственный SpinnerModel (например, с помощью подкласса SpinnerNumberModel) и запустить все нужные вам события.Если ваша реализация наследует от AbstractSpinnerModel, как и SpinnerNumberModel, у вас будет удобный метод fireStateChanged для отправки событий:

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

1 голос
/ 09 декабря 2010

Томас опередил меня, но я пришел к такому же выводу, и вот что я в итоге сделал:

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(); }
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...