Module  java.desktop
软件包  javax.swing

Class SpinnerNumberModel

  • All Implemented Interfaces:
    SerializableSpinnerModel


    public class SpinnerNumberModel
    extends AbstractSpinnerModel
    implements Serializable
    A SpinnerModel用于数字序列。 序列的上限和下限由称为minimummaximum属性定义。 nextValuepreviousValue方法计算的增加或减少的大小由称为stepSize的属性定义。 minimummaximum属性可以是null以表明序列没有下限或上限。 该类中的所有属性都是根据两种通用类型定义的: NumberComparable ,以便可以Comparable所有Java数值类型。 在内部,有只为值类型为原始的一个支持Number类型: DoubleFloatLongIntegerShort ,或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 ChangeListeners通知每当模型valuestepSizeminimum ,或maximum性能的变化。

    从以下版本开始:
    1.4
    另请参见:
    JSpinnerSpinnerModelAbstractSpinnerModelSpinnerListModelSpinnerDateModelSerialized Form
    • 构造方法详细信息

      • SpinnerNumberModel

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

        minimummaximum参数可以是null以表明范围没有上限或下限。 如果value或者stepSizenull ,或者如果两个minimummaximum指定并minimum > maximum那么IllegalArgumentException被抛出。 类似地,如果(minimum <= value <= maximum )为假,则抛出一个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)
        构建 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具有指定 valueminimum / maximum界限, stepSize
        参数
        value - 模型的当前值
        minimum - 序列中的第一个数字
        maximum - 序列中的最后一个数字
        stepSize - 序列元素之间的差异
        异常
        IllegalArgumentException - 如果以下表达式为false: minimum <= value <= maximum
      • SpinnerNumberModel

        public SpinnerNumberModel​()
        构建一个 SpinnerNumberModel其中没有 minimummaximum值, stepSize等于1,初始值为零。
    • 方法详细信息

      • setMinimum

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

        典型地,这个属性是一个Number的相同类型的value然而有可能使用任何ComparablecompareTo方法用于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 ,具有 compareToNumberNumber相同的 value
        另请参见:
        getMinimum()setMaximum(java.lang.Comparable<?>)SpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
      • setMaximum

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

        通常此属性是与Number相同类型的value但是对于具有与该值相同类型的Number ,可以使用任何ComparablecompareTo方法。 setMinimum的一个例子。

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

        参数
        maximum -一个 Comparable具有 compareTo为方法 Number s的相同类型 value
        另请参见:
        getMaximum()setMinimum(java.lang.Comparable<?>)SpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
      • getStepSize

        public Number getStepSize​()
        返回由 getNextValuegetPreviousValue方法计算的值变化的大小。
        结果
        的价值 stepSize属性
        另请参见:
        setStepSize(java.lang.Number)
      • setValue

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

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

        Specified by:
        setValue在接口 SpinnerModel
        参数
        value - 此序列的当前(非 nullNumber
        异常
        IllegalArgumentException - 如果 valuenull或不是 Number
        另请参见:
        getNumber()getValue()SpinnerModel.addChangeListener(javax.swing.event.ChangeListener)