模块 java.desktop

类 SpinnerNumberModel

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 创建一个 SpinnerNumberModel,初始值为 50,可以这样写:

 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。每当模型的 valuestepSizeminimummaximum 属性发生变化时,ChangeListeners 就会收到通知。

自从:
1.4
参见:
  • 构造方法详细信息

    • SpinnerNumberModel

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

      minimummaximum 参数可以是 null 以指示范围没有上限或下限。如果 valuestepSizenull ,或者如果指定了 minimummaximum 以及 minimum > maximum 则抛出 IllegalArgumentException。同样,如果 (minimum <= value <= maximum ) 为假,则抛出 IllegalArgumentException

      参数:
      value - 模型的当前(非 null)值
      minimum - 序列中的第一个数字或 null
      maximum - 序列中的最后一个数字或 null
      stepSize - 序列元素之间的差异
      抛出:
      IllegalArgumentException - 如果 stepSize 或值为 null 或者如果以下表达式为假:minimum <= value <= maximum
    • SpinnerNumberModel

      public SpinnerNumberModel(int value, int minimum, int maximum, int stepSize)
      使用指定的 valueminimum /maximum 边界和 stepSize 构造一个 SpinnerNumberModel
      参数:
      value - 模型的当前值
      minimum - 序列中的第一个数字
      maximum - 序列中的最后一个数字
      stepSize - 序列元素之间的差异
      抛出:
      IllegalArgumentException - 如果以下表达式为假:minimum <= value <= maximum
    • SpinnerNumberModel

      public SpinnerNumberModel(double value, double minimum, double maximum, double stepSize)
      使用指定的 valueminimum /maximum 边界和 stepSize 构造一个 SpinnerNumberModel
      参数:
      value - 模型的当前值
      minimum - 序列中的第一个数字
      maximum - 序列中的最后一个数字
      stepSize - 序列元素之间的差异
      抛出:
      IllegalArgumentException - 如果以下表达式为假:minimum <= value <= maximum
    • SpinnerNumberModel

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

    • setMinimum

      public void setMinimum(Comparable <?> minimum)
      更改此序列中数字的下限。如果 minimumnull ,则没有下界。这里没有进行边界检查;新的 minimum 值可能会使构造函数强制执行的 (minimum <= value <= maximum) 不变量无效。这是为了简化更新模型,自然应该在调用 getNextValuegetPreviousValuesetValue 方法之前确保不变量为真。

      通常,此属性是与 value 类型相同的 Number,但是可以将任何带有 compareTo 方法的 Comparable 用于与值具有相同类型的 Number。例如,如果值是一个 Longminimum 可能是一个像这样定义的 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 具有用于 NumbercompareTo 方法,其类型与 value 相同
      参见:
    • getMinimum

      public Comparable <?> getMinimum()
      返回此序列中的第一个数字。
      返回:
      minimum 属性的值
      参见:
    • setMaximum

      public void setMaximum(Comparable <?> maximum)
      更改此序列中数字的上限。如果 maximumnull ,则没有上限。这里没有进行边界检查;新的 maximum 值可能会使构造函数强制执行的 (minimum <= value < maximum) 不变量无效。这是为了简化更新模型,自然应该在调用 nextprevioussetValue 方法之前确保不变量为真。

      通常,此属性是与 value 类型相同的 Number,但是可以将任何带有 compareTo 方法的 Comparable 用于与值具有相同类型的 Number。有关示例,请参见 setMinimum(Comparable)

      如果 maximum 已更改,此方法将触发 ChangeEvent

      参数:
      maximum - 一个 Comparable 具有用于 NumbercompareTo 方法,其类型与 value 相同
      参见:
    • getMaximum

      public Comparable <?> getMaximum()
      返回序列中的最后一个数字。
      返回:
      maximum 属性的值
      参见:
    • setStepSize

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

      如果 stepSize 已更改,此方法将触发 ChangeEvent

      参数:
      stepSize - 由 getNextValuegetPreviousValue 方法计算的值变化的大小
      参见:
    • getStepSize

      public Number  getStepSize()
      返回由 getNextValuegetPreviousValue 方法计算的值变化的大小。
      返回:
      stepSize 属性的值
      参见:
    • getNextValue

      public Object  getNextValue()
      返回序列中的下一个数字。
      指定者:
      getNextValue 在接口 SpinnerModel
      返回:
      value + stepSizenull 如果总和超过 maximum
      参见:
    • getPreviousValue

      public Object  getPreviousValue()
      返回序列中的前一个数字。
      指定者:
      getPreviousValue 在接口 SpinnerModel
      返回:
      value - stepSizenull 如果总和小于 minimum
      参见:
    • getNumber

      public Number  getNumber()
      返回序列当前元素的值。
      返回:
      值属性
      参见:
    • getValue

      public Object  getValue()
      返回序列当前元素的值。
      指定者:
      getValue 在接口 SpinnerModel
      返回:
      值属性
      参见:
    • setValue

      public void setValue(Object  value)
      设置此序列的当前值。如果 valuenull,或者不是 Number,则抛出 IllegalArgumentException。这里没有进行边界检查;新值可能会使构造函数强制执行的 (minimum <= value <= maximum) 不变量无效。也可以将值设置为序列中不会自然出现的值,即不是模 stepSize 的值。这是为了简化模型的更新,并适应不想限制用户直接输入的值的微调器。当然,在调用 nextprevioussetValue 方法之前,应确保 (minimum <= value <= maximum) 不变量为真。

      如果值已更改,此方法将触发 ChangeEvent

      指定者:
      setValue 在接口 SpinnerModel
      参数:
      value - 此序列的当前(非 nullNumber
      抛出:
      IllegalArgumentException - 如果 valuenull 或者不是 Number
      参见: