java.lang.Object
javax.swing.AbstractSpinnerModel
javax.swing.SpinnerNumberModel
- 所有已实现的接口:
-
Serializable
,SpinnerModel
用于数字序列的
SpinnerModel
。序列的上限和下限由名为minimum
和maximum
的属性定义。由nextValue
和previousValue
方法计算的增加或减少的大小由名为stepSize
的属性定义。minimum
和maximum
属性可以为null
,表示序列没有下限或上限。此类中的所有属性都是根据两种通用类型Number
和Comparable
定义的,以便可以容纳所有Java数值类型。在内部,仅支持类型为原始Number
类型之一的值:Double
、Float
、Long
、Integer
、Short
或Byte
。
要创建一个整数范围从零到一百、初始值为五十的SpinnerNumberModel
,可以这样写:
Integer value = Integer.valueOf(50); Integer min = Integer.valueOf(0); Integer max = Integer.valueOf(100); Integer step = Integer.valueOf(1); SpinnerNumberModel model = new SpinnerNumberModel(value, min, max, step); int fifty = model.getNumber().intValue();
整数和双精度数值的微调器很常见,因此为这些情况提供了特殊的构造函数。例如,要创建前面示例中的模型,也可以这样写:
SpinnerNumberModel model = new SpinnerNumberModel(50, 0, 100, 1);
此模型继承了一个ChangeListener
。当模型的value
、stepSize
、minimum
或maximum
属性更改时,将通知ChangeListeners
。
- 自版本:
- 1.4
- 参见:
-
Field Summary
Fields declared in class javax.swing.AbstractSpinnerModel
listenerList
-
Constructor Summary
ConstructorDescription构造一个SpinnerNumberModel
,没有minimum
或maximum
值,stepSize
等于一,初始值为零。SpinnerNumberModel
(double value, double minimum, double maximum, double stepSize) 构造一个SpinnerNumberModel
,具有指定的value
、minimum
/maximum
边界和stepSize
。SpinnerNumberModel
(int value, int minimum, int maximum, int stepSize) 构造一个SpinnerNumberModel
,具有指定的value
、minimum
/maximum
边界和stepSize
。SpinnerNumberModel
(Number value, Comparable<?> minimum, Comparable<?> maximum, Number stepSize) 构造一个代表从minimum
到maximum
的闭合数字序列的SpinnerModel
。 -
Method Summary
Modifier and TypeMethodDescriptionComparable
<?> 返回序列中的最后一个数字。Comparable
<?> 返回此序列中的第一个数字。返回序列中的下一个数字。返回序列的当前元素的值。返回序列中的前一个数字。返回由getNextValue
和getPreviousValue
方法计算的值更改的大小。getValue()
返回序列的当前元素的值。void
setMaximum
(Comparable<?> maximum) 更改此序列中数字的上限。void
setMinimum
(Comparable<?> minimum) 更改此序列中数字的下限。void
setStepSize
(Number stepSize) 更改由getNextValue
和getPreviousValue
方法计算的值更改的大小。void
设置此序列的当前值。Methods declared in class javax.swing.AbstractSpinnerModel
addChangeListener, fireStateChanged, getChangeListeners, getListeners, removeChangeListener
-
Constructor Details
-
SpinnerNumberModel
public SpinnerNumberModel(Number value, Comparable<?> minimum, Comparable<?> maximum, Number stepSize) 构造一个代表从minimum
到maximum
的闭合数字序列的SpinnerModel
。通过nextValue
和previousValue
方法,通过分别添加或减去stepSize
来计算序列的元素。所有参数必须是相互Comparable
的,value
和stepSize
必须是Integer
、Long
、Float
或Double
的实例。minimum
和maximum
参数可以为null
,表示范围没有上限或下限。如果value
或stepSize
为null
,或者如果指定了minimum
和maximum
且minimum > maximum
,则会抛出IllegalArgumentException
。类似地,如果(minimum <= value <= maximum
)为false,则会抛出IllegalArgumentException
。- 参数:
-
value
- 模型的当前(非null
)值 -
minimum
- 序列中的第一个数字或null
-
maximum
- 序列中的最后一个数字或null
-
stepSize
- 序列元素之间的差异 - 抛出:
-
IllegalArgumentException
- 如果stepSize
或value
为null
,或者如果以下表达式为false:minimum <= value <= maximum
-
SpinnerNumberModel
public SpinnerNumberModel(int value, int minimum, int maximum, int stepSize) 构造一个SpinnerNumberModel
,具有指定的value
、minimum
/maximum
边界和stepSize
。- 参数:
-
value
- 模型的当前值 -
minimum
- 序列中的第一个数字 -
maximum
- 序列中的最后一个数字 -
stepSize
- 序列元素之间的差异 - 抛出:
-
IllegalArgumentException
- 如果以下表达式为false:minimum <= value <= maximum
-
SpinnerNumberModel
public SpinnerNumberModel(double value, double minimum, double maximum, double stepSize) 构造一个SpinnerNumberModel
,具有指定的value
、minimum
/maximum
边界和stepSize
。- 参数:
-
value
- 模型的当前值 -
minimum
- 序列中的第一个数字 -
maximum
- 序列中的最后一个数字 -
stepSize
- 序列元素之间的差异 - 抛出:
-
IllegalArgumentException
- 如果以下表达式为false:minimum <= value <= maximum
-
SpinnerNumberModel
public SpinnerNumberModel()构造一个SpinnerNumberModel
,没有minimum
或maximum
值,stepSize
等于一,初始值为零。
-
-
Method Details
-
setMinimum
更改此序列中数字的下限。如果minimum
为null
,则没有下限。此处不执行任何边界检查;新的minimum
值可能会使构造函数强制执行的(minimum <= value <= maximum)
不变性无效。这是为了简化更新模型,自然地,在调用getNextValue
、getPreviousValue
或setValue
方法之前,应确保不变性为真。通常,此属性是与
value
相同类型的Number
,但也可以使用任何具有compareTo
方法的Comparable
,该方法用于与与值相同类型的Number
进行比较。例如,如果值是Long
,则minimum
可能是这样定义的日期子类: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
- 一个具有compareTo
方法的Comparable
,用于与value
相同类型的Number
进行比较 - 参见:
-
getMinimum
返回此序列中的第一个数字。- 返回:
-
minimum
属性的值 - 参见:
-
setMaximum
更改此序列中数字的上限。如果maximum
为null
,则没有上限。此处不执行任何边界检查;新的maximum
值可能会使构造函数强制执行的(minimum <= value < maximum)
不变性无效。这是为了简化更新模型,自然地,在调用next
、previous
或setValue
方法之前,应确保不变性为真。通常,此属性是与
value
相同类型的Number
,但也可以使用任何具有compareTo
方法的Comparable
,该方法用于与与值相同类型的Number
进行比较。有关示例,请参见setMinimum(Comparable)
。如果
maximum
已更改,则此方法会触发ChangeEvent
。- 参数:
-
maximum
- 一个Comparable
,具有与value
相同类型的Number
的compareTo
方法 - 参见:
-
getMaximum
返回序列中的最后一个数字。- 返回:
-
maximum
属性的值 - 参见:
-
setStepSize
更改由getNextValue
和getPreviousValue
方法计算的值更改的大小。如果stepSize
为null
,则会抛出IllegalArgumentException
。如果
stepSize
已更改,则此方法会触发ChangeEvent
。- 参数:
-
stepSize
- 由getNextValue
和getPreviousValue
方法计算的值更改的大小 - 参见:
-
getStepSize
返回由getNextValue
和getPreviousValue
方法计算的值更改的大小。- 返回:
-
stepSize
属性的值 - 参见:
-
getNextValue
返回序列中的下一个数字。- 指定者:
-
getNextValue
在接口SpinnerModel
- 返回:
-
value + stepSize
,如果总和超过maximum
则返回null
。 - 参见:
-
getPreviousValue
返回序列中的上一个数字。- 指定者:
-
getPreviousValue
在接口SpinnerModel
- 返回:
-
value - stepSize
,如果总和小于minimum
则返回null
。 - 参见:
-
getNumber
返回序列中当前元素的值。- 返回:
- 值属性
- 参见:
-
getValue
返回序列中当前元素的值。- 指定者:
-
getValue
在接口SpinnerModel
- 返回:
- 值属性
- 参见:
-
setValue
设置此序列的当前值。如果value
为null
或不是Number
,则会抛出IllegalArgumentException
。此处不进行边界检查;新值可能会使由构造函数强制执行的(minimum <= value <= maximum)
不变式无效。还可以将值设置为不会自然出现在序列中的值,即不是stepSize
的模数。这是为了简化更新模型,并适应不希望限制用户直接输入的微调器的值。当然,在调用next
、previous
或setValue
方法之前,应确保(minimum <= value <= maximum)
不变式为真。如果值已更改,则此方法会触发
ChangeEvent
。- 指定者:
-
setValue
在接口SpinnerModel
- 参数:
-
value
- 此序列的当前(非null
)Number
- 抛出:
-
IllegalArgumentException
- 如果value
为null
或不是Number
- 参见:
-