我有一个SpinnerNumberModel和一些ChangeListener

但是,仅当微调框号更改时,ChangeListener才会收到通知。即使新的微调器编号与先前的值相同,是否有办法启动传播到ChangeListeners的事件?

最佳答案

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()

07-24 09:30