javax.swing

接口
异常
java.lang.Object
  继承者 javax.swing.AbstractSpinnerModel
      继承者 javax.swing.SpinnerNumberModel
所有已实现的接口:
Serializable, SpinnerModel

public class SpinnerNumberModel
     
extends AbstractSpinnerModel
implements Serializable

用于数字序列的 SpinnerModel。该序列的上下边界由名为 minimummaximum 的属性定义。nextValuepreviousValue 方法计算的增加或减少的大小由名为 stepSize 的属性定义。该 minimummaximum 属性可以为 null,指示该序列没有下限和上限。此类中的所有属性都根据以下两个一般类型定义:NumberComparable,以便适应所有 Java 数字类型。在内部,仅支持其类型为以下某个基本 Number 类型的值:DoubleFloatLongIntegerShortByte

要创建从 0 到 100 整数范围(初始值为 50)的 SpinnerNumberModel,可以写入:

 
 Integer value = new Integer(50); 
Integer min = new Integer(0);
 Integer max = new Integer(100); 
 Integer step = new Integer(1); 
 SpinnerNumberModel model = new SpinnerNumberModel(value, min, max, step); 
 int fifty = model.getNumber().intValue(); 
 

Integer 和 double 的 spinner 是很常见的,因此提供了针对这些情况的特殊构造方法。例如,要创建前一示例中的模式,也可以写入:

 
 SpinnerNumberModel model = new SpinnerNumberModel(50, 0, 100, 1); 
 

此模式继承的是一个 ChangeListener。每当该模式的 valuestepSizeminimummaximum 属性发生变化时,就会通知该 ChangeListeners

从以下版本开始:
1.4
另请参见:
JSpinner, SpinnerModel, AbstractSpinnerModel, SpinnerListModel, SpinnerDateModel

字段摘要
 
从类 javax.swing.AbstractSpinnerModel 继承的字段
listenerList
 
构造方法摘要
SpinnerNumberModel()
          构造一个没有 minimummaximum 值、stepSize 等于 1 且初始值为零的 SpinnerNumberModel
SpinnerNumberModel(double value, double minimum, double maximum, double stepSize)
          构造一个具有指定 valueminimum/maximum 边界和 stepSizeSpinnerNumberModel
SpinnerNumberModel(int value, int minimum, int maximum, int stepSize)
          构造一个具有指定 valueminimum/maximum 边界和 stepSizeSpinnerNumberModel
SpinnerNumberModel(Number value, Comparable minimum, Comparable maximum, Number stepSize)
          构造一个表示从 minimummaximum 的闭区间数字序列的 SpinnerModel
 
方法摘要
 Comparable getMaximum()
          返回该序列中的最后一个数字。
 Comparable getMinimum()
          返回此序列中的第一个数字。
 Object getNextValue()
          返回该序列中的下一个数字。
 Number getNumber()
          返回该序列的当前元素的值。
 Object getPreviousValue()
          返回该序列中的上一个数字。
 Number getStepSize()
          返回由 getNextValuegetPreviousValue 方法计算的值更改的大小。
 Object getValue()
          返回该序列的当前元素的值。
 void setMaximum(Comparable maximum)
          更改此序列中数字的上边界。
 void setMinimum(Comparable minimum)
          更改此序列中数字的下边界。
 void setStepSize(Number stepSize)
          更改由 getNextValuegetPreviousValue 方法计算的值更改的大小。
 void setValue(Object value)
          设置此序列的当前元素。
 
从类 javax.swing.AbstractSpinnerModel 继承的方法
addChangeListener, fireStateChanged, getChangeListeners, getListeners, removeChangeListener
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SpinnerNumberModel

public SpinnerNumberModel(Number value,
                          Comparable minimum,
                          Comparable maximum,
                          Number stepSize)
构造一个表示从 minimummaximum 的闭区间数字序列的 SpinnerModelnextValuepreviousValue 方法通过分别添加或减去 stepSize 计算该序列的元素。所有参数必须是相互 Comparable 的, valuestepSize 必须是 Integer LongFloatDouble 的实例。

minimummaximum 参数可以为 null,指示该范围没有上下边界。如果 valuestepSizenull,或者 minimummaximum 两者都是指定值,且 mininum > maximum,则抛出一个 IllegalArgumentException。同样,如果 (minimum <= value <= maximum) 为 false,则抛出一个 IllegalArgumentException

参数:
value - 该模式的当前(非 null)值
minimum - 该序列中第一个数或 null
maximum - 该序列中的最后一个数或 null
stepSize - 该序列中元素之间的区别
抛出:
IllegalArgumentException - 如果 stepSize 或值为 null,或者以下表达式为 false: minimum <= value <= maximum

SpinnerNumberModel

public SpinnerNumberModel(int value,
                          int minimum,
                          int maximum,
                          int stepSize)
构造一个具有指定 valueminimum/ maximum 边界和 stepSizeSpinnerNumberModel

参数:
value - 该模式的当前值
minimum - 该序列中的第一个数
maximum - 该序列中的最后一个数
stepSize - 该序列中元素之间的区别
抛出:
IllegalArgumentException - 如果以下表达式为 false: minimum <= value <= maximum

SpinnerNumberModel

public SpinnerNumberModel(double value,
                          double minimum,
                          double maximum,
                          double stepSize)
构造一个具有指定 valueminimum/ maximum 边界和 stepSizeSpinnerNumberModel

参数:
value - 该模式的当前值
minimum - 该序列中的第一个数
maximum - 该序列中的最后一个数
stepSize - 该序列中元素之间的区别
抛出:
IllegalArgumentException - 如果以下表达式为 false: minimum <= value <= maximum

SpinnerNumberModel

public SpinnerNumberModel()
构造一个没有 minimummaximum 值、 stepSize 等于 1 且初始值为零的 SpinnerNumberModel

方法详细信息

setMinimum

public void setMinimum(Comparable minimum)
更改此序列中数字的下边界。如果 minimumnull,则不存在下边界。此处不进行边界检查;新 minimum 值可能会使该构造方法强制执行的 (minimum <= value <= maximum) 等式失效。这样可以简化更新该模式,调用 getNextValuegetPreviousValuesetValue 方法之前自然应该确保该等式为 true。

通常,此属性是一个与 value 同一类型的 Number,但是,与该值同一类型 Number 可以使用具有 compareTo 方法的任何 Comparable。例如,如果值为 Long,则 minimum 可能是一个这样定义的 Date 子类:

 MyDate extends Date {  // Date already implements Comparable
     public int compareTo(Long o) {
         long t = getTime();
         return (t < o.longValue() ? -1 : (t == o.longValue() ? 0 : 1));
     }
 }
 

如果 minimum 已经更改,则此方法会激发一个 ChangeEvent

参数:
minimum - 一个 Comparable,它具有与 value 同一类型的 NumbercompareTo 方法
另请参见:
getMinimum(), setMaximum(java.lang.Comparable), SpinnerModel.addChangeListener(javax.swing.event.ChangeListener)

getMinimum

public Comparable getMinimum()
返回此序列中的第一个数字。

返回:
minimum 属性的值
另请参见:
setMinimum(java.lang.Comparable)

setMaximum

public void setMaximum(Comparable maximum)
更改此序列中数字的上边界。如果 maximumnull,则不存在上边界。此处不进行边界检查;新 maximum 值可能会使该构造方法强制执行的 (minimum <= value < maximum) 等式失效。这样可以简化更新该模式,调用 nextprevioussetValue 方法之前自然应该确保该等式为 true。

通常,此属性是一个与 value 同一类型的 Number,但是,与该值同一类型 Number 可以使用具有 compareTo 方法的任何 Comparable。有关示例,请参阅 setMinimum

如果 maximum 已经更改,则此方法会激发一个 ChangeEvent

参数:
maximum - 一个 Comparable,它具有与 value 同一类型的 NumbercompareTo 方法
另请参见:
setMinimum(java.lang.Comparable), SpinnerModel.addChangeListener(javax.swing.event.ChangeListener)

getMaximum

public Comparable getMaximum()
返回该序列中的最后一个数字。

返回:
maximum 属性的值
另请参见:
setMaximum(java.lang.Comparable)

setStepSize

public void setStepSize(Number stepSize)
更改由 getNextValuegetPreviousValue 方法计算的值更改的大小。如果 stepSizenull,则抛出一个 IllegalArgumentException

如果 stepSize 已经更改,则此方法会激发一个 ChangeEvent

参数:
stepSize - 由 getNextValuegetPreviousValue 方法计算的值更改的大小
另请参见:
getNextValue(), getPreviousValue(), getStepSize(), SpinnerModel.addChangeListener(javax.swing.event.ChangeListener)

getStepSize

public Number getStepSize()
返回由 getNextValuegetPreviousValue 方法计算的值更改的大小。

返回:
stepSize 属性的值
另请参见:
setStepSize(java.lang.Number)

getNextValue

public Object getNextValue()
返回该序列中的下一个数字。

指定者:
接口 SpinnerModel 中的 getNextValue
返回:
value + stepSize,如果和超过 maximum,则返回 null
另请参见:
SpinnerModel.getNextValue(), getPreviousValue(), setStepSize(java.lang.Number)

getPreviousValue

public Object getPreviousValue()
返回该序列中的上一个数字。

指定者:
接口 SpinnerModel 中的 getPreviousValue
返回:
value - stepSize,如果和小于 minimum,则返回 null
另请参见:
SpinnerModel.getPreviousValue(), getNextValue(), setStepSize(java.lang.Number)

getNumber

public Number getNumber()
返回该序列的当前元素的值。

返回:
值属性
另请参见:
setValue(java.lang.Object)

getValue

public Object getValue()
返回该序列的当前元素的值。

指定者:
接口 SpinnerModel 中的 getValue
返回:
值属性
另请参见:
setValue(java.lang.Object), getNumber()

setValue

public void setValue(Object value)
设置此序列的当前元素。如果 valuenull,或不为 Number,则抛出一个 IllegalArgumentException。此处不进行边界检查;新值可能会使该构造方法强制执行的 (minimum <= value <= maximum) 等式失效。还可以将该值设置为不会在该序列中自然出现的值,即一个不以 stepSize 为模的值。这样做是为了简化更新该模式,也是为了适应不希望限制由用户直接输入的值的 spinner。很自然,调用 nextprevioussetValue 方法之前应该确保 (minimum <= value <= maximum) 等式为 true。

如果该值已更改,则此方法会激发一个 ChangeEvent

指定者:
接口 SpinnerModel 中的 setValue
参数:
value - 此序列的当前(非 nullNumber
抛出:
IllegalArgumentException - 如果 valuenull 或不为 Number
另请参见:
getNumber(), getValue(), SpinnerModel.addChangeListener(javax.swing.event.ChangeListener)