我有一个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()