APIdia Launch Partner
Top Description Fields Constructors Methods
javax.swing

public Class SpinnerNumberModel

extends AbstractSpinnerModel
implements Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable
Annotations
@SuppressWarnings:serial
Imports
java.util.*, java.io.Serializable

A SpinnerModel for sequences of numbers. The upper and lower bounds of the sequence are defined by properties called minimum and maximum. The size of the increase or decrease computed by the nextValue and previousValue methods is defined by a property called stepSize. The minimum and maximum properties can be null to indicate that the sequence has no lower or upper limit. All of the properties in this class are defined in terms of two generic types: Number and Comparable, so that all Java numeric types may be accommodated. Internally, there's only support for values whose type is one of the primitive Number types: Double, Float, Long, Integer, Short, or Byte.

To create a SpinnerNumberModel for the integer range zero to one hundred, with fifty as the initial value, one could write:

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();

Spinners for integers and doubles are common, so special constructors for these cases are provided. For example to create the model in the previous example, one could also write:

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

This model inherits a ChangeListener. The ChangeListeners are notified whenever the model's value, stepSize, minimum, or maximum properties changes.

Author
Hans Muller
Since
1.4
See Also
JSpinner, SpinnerModel, AbstractSpinnerModel, SpinnerListModel, SpinnerDateModel

Field Summary

Modifier and TypeField and Description
private Comparable<?>
private Comparable<?>
private Number
private Number
Inherited from javax.swing.AbstractSpinnerModel:
listenerList

Constructor Summary

AccessConstructor and Description
public
SpinnerNumberModel(Number
the current (non null) value of the model
value
,
Comparable<?>
the first number in the sequence or null
minimum
,
Comparable<?>
the last number in the sequence or null
maximum
,
Number
the difference between elements of the sequence
stepSize
)

Constructs a SpinnerModel that represents a closed sequence of numbers from minimum to maximum.

public
SpinnerNumberModel(int
the current value of the model
value
,
int
the first number in the sequence
minimum
,
int
the last number in the sequence
maximum
,
int
the difference between elements of the sequence
stepSize
)

Constructs a SpinnerNumberModel with the specified value, minimum/maximum bounds, and stepSize.

public
SpinnerNumberModel(double
the current value of the model
value
,
double
the first number in the sequence
minimum
,
double
the last number in the sequence
maximum
,
double
the difference between elements of the sequence
stepSize
)

Constructs a SpinnerNumberModel with the specified value, minimum/maximum bounds, and stepSize.

public
SpinnerNumberModel()

Constructs a SpinnerNumberModel with no minimum or maximum value, stepSize equal to one, and an initial value of zero.

Method Summary

Modifier and TypeMethod and Description
public Comparable<?>

Returns:

the value of the maximum property
getMaximum
()

Returns the last number in the sequence.

public Comparable<?>

Returns:

the value of the minimum property
getMinimum
()

Returns the first number in this sequence.

public Object

Returns:

value + stepSize or null if the sum exceeds maximum.
getNextValue
()

Implements javax.swing.SpinnerModel.getNextValue.

Returns the next number in the sequence.

public Number

Returns:

the value property
getNumber
()

Returns the value of the current element of the sequence.

public Object

Returns:

value - stepSize, or null if the sum is less than minimum.
getPreviousValue
()

Implements javax.swing.SpinnerModel.getPreviousValue.

Returns the previous number in the sequence.

public Number

Returns:

the value of the stepSize property
getStepSize
()

Returns the size of the value change computed by the getNextValue and getPreviousValue methods.

public Object

Returns:

the value property
getValue
()

Implements javax.swing.SpinnerModel.getValue.

Returns the value of the current element of the sequence.

private Number
incrValue(int dir)

public void
setMaximum(Comparable<?>
a Comparable that has a compareTo method for Numbers with the same type as value
maximum
)

Changes the upper bound for numbers in this sequence.

public void
setMinimum(Comparable<?>
a Comparable that has a compareTo method for Numbers with the same type as value
minimum
)

Changes the lower bound for numbers in this sequence.

public void
setStepSize(Number
the size of the value change computed by the getNextValue and getPreviousValue methods
stepSize
)

Changes the size of the value change computed by the getNextValue and getPreviousValue methods.

public void
setValue(Object
the current (non null) Number for this sequence
value
)

Implements javax.swing.SpinnerModel.setValue.

Sets the current value for this sequence.

Inherited from javax.swing.AbstractSpinnerModel:
addChangeListenerfireStateChangedgetChangeListenersgetListenersremoveChangeListener

Field Detail

maximumback to summary
private Comparable<?> maximum
minimumback to summary
private Comparable<?> minimum
stepSizeback to summary
private Number stepSize
valueback to summary
private Number value

Constructor Detail

SpinnerNumberModelback to summary
public SpinnerNumberModel(Number value, Comparable<?> minimum, Comparable<?> maximum, Number stepSize)

Constructs a SpinnerModel that represents a closed sequence of numbers from minimum to maximum. The nextValue and previousValue methods compute elements of the sequence by adding or subtracting stepSize respectively. All of the parameters must be mutually Comparable, value and stepSize must be instances of Integer Long, Float, or Double.

The minimum and maximum parameters can be null to indicate that the range doesn't have an upper or lower bound. If value or stepSize is null, or if both minimum and maximum are specified and minimum > maximum then an IllegalArgumentException is thrown. Similarly if (minimum <= value <= maximum) is false, an IllegalArgumentException is thrown.

Parameters
value:Number

the current (non null) value of the model

minimum:Comparable<?>

the first number in the sequence or null

maximum:Comparable<?>

the last number in the sequence or null

stepSize:Number

the difference between elements of the sequence

Annotations
@SuppressWarnings:unchecked
Exceptions
IllegalArgumentException:
if stepSize or value is null or if the following expression is false: minimum <= value <= maximum
SpinnerNumberModelback to summary
public SpinnerNumberModel(int value, int minimum, int maximum, int stepSize)

Constructs a SpinnerNumberModel with the specified value, minimum/maximum bounds, and stepSize.

Parameters
value:int

the current value of the model

minimum:int

the first number in the sequence

maximum:int

the last number in the sequence

stepSize:int

the difference between elements of the sequence

Exceptions
IllegalArgumentException:
if the following expression is false: minimum <= value <= maximum
SpinnerNumberModelback to summary
public SpinnerNumberModel(double value, double minimum, double maximum, double stepSize)

Constructs a SpinnerNumberModel with the specified value, minimum/maximum bounds, and stepSize.

Parameters
value:double

the current value of the model

minimum:double

the first number in the sequence

maximum:double

the last number in the sequence

stepSize:double

the difference between elements of the sequence

Exceptions
IllegalArgumentException:
if the following expression is false: minimum <= value <= maximum
SpinnerNumberModelback to summary
public SpinnerNumberModel()

Constructs a SpinnerNumberModel with no minimum or maximum value, stepSize equal to one, and an initial value of zero.

Method Detail

getMaximumback to summary
public Comparable<?> getMaximum()

Returns the last number in the sequence.

Returns:Comparable<?>

the value of the maximum property

See Also
setMaximum
getMinimumback to summary
public Comparable<?> getMinimum()

Returns the first number in this sequence.

Returns:Comparable<?>

the value of the minimum property

See Also
setMinimum
getNextValueback to summary
public Object getNextValue()

Implements javax.swing.SpinnerModel.getNextValue.

Returns the next number in the sequence.

Returns:Object

value + stepSize or null if the sum exceeds maximum.

See Also
SpinnerModel#getNextValue, getPreviousValue, setStepSize
getNumberback to summary
public Number getNumber()

Returns the value of the current element of the sequence.

Returns:Number

the value property

See Also
setValue
getPreviousValueback to summary
public Object getPreviousValue()

Implements javax.swing.SpinnerModel.getPreviousValue.

Returns the previous number in the sequence.

Returns:Object

value - stepSize, or null if the sum is less than minimum.

See Also
SpinnerModel#getPreviousValue, getNextValue, setStepSize
getStepSizeback to summary
public Number getStepSize()

Returns the size of the value change computed by the getNextValue and getPreviousValue methods.

Returns:Number

the value of the stepSize property

See Also
setStepSize
getValueback to summary
public Object getValue()

Implements javax.swing.SpinnerModel.getValue.

Returns the value of the current element of the sequence.

Returns:Object

the value property

See Also
setValue, getNumber
incrValueback to summary
private Number incrValue(int dir)
Annotations
@SuppressWarnings:unchecked
setMaximumback to summary
public void setMaximum(Comparable<?> maximum)

Changes the upper bound for numbers in this sequence. If maximum is null, then there is no upper bound. No bounds checking is done here; the new maximum value may invalidate the (minimum <= value < maximum) invariant enforced by the constructors. This is to simplify updating the model, naturally one should ensure that the invariant is true before calling the next, previous, or setValue methods.

Typically this property is a Number of the same type as the value however it's possible to use any Comparable with a compareTo method for a Number with the same type as the value. See setMinimum(Comparable) for an example.

This method fires a ChangeEvent if the maximum has changed.

Parameters
maximum:Comparable<?>

a Comparable that has a compareTo method for Numbers with the same type as value

See Also
getMaximum, setMinimum, SpinnerModel#addChangeListener
setMinimumback to summary
public void setMinimum(Comparable<?> minimum)

Changes the lower bound for numbers in this sequence. If minimum is null, then there is no lower bound. No bounds checking is done here; the new minimum value may invalidate the (minimum <= value <= maximum) invariant enforced by the constructors. This is to simplify updating the model, naturally one should ensure that the invariant is true before calling the getNextValue, getPreviousValue, or setValue methods.

Typically this property is a Number of the same type as the value however it's possible to use any Comparable with a compareTo method for a Number with the same type as the value. For example if value was a Long, minimum might be a Date subclass defined like this:

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));
    }
}

This method fires a ChangeEvent if the minimum has changed.

Parameters
minimum:Comparable<?>

a Comparable that has a compareTo method for Numbers with the same type as value

See Also
getMinimum, setMaximum, SpinnerModel#addChangeListener
setStepSizeback to summary
public void setStepSize(Number stepSize)

Changes the size of the value change computed by the getNextValue and getPreviousValue methods. An IllegalArgumentException is thrown if stepSize is null.

This method fires a ChangeEvent if the stepSize has changed.

Parameters
stepSize:Number

the size of the value change computed by the getNextValue and getPreviousValue methods

See Also
getNextValue, getPreviousValue, getStepSize, SpinnerModel#addChangeListener
setValueback to summary
public void setValue(Object value)

Implements javax.swing.SpinnerModel.setValue.

Sets the current value for this sequence. If value is null, or not a Number, an IllegalArgumentException is thrown. No bounds checking is done here; the new value may invalidate the (minimum <= value <= maximum) invariant enforced by the constructors. It's also possible to set the value to be something that wouldn't naturally occur in the sequence, i.e. a value that's not modulo the stepSize. This is to simplify updating the model, and to accommodate spinners that don't want to restrict values that have been directly entered by the user. Naturally, one should ensure that the (minimum <= value <= maximum) invariant is true before calling the next, previous, or setValue methods.

This method fires a ChangeEvent if the value has changed.

Parameters
value:Object

the current (non null) Number for this sequence

Exceptions
IllegalArgumentException:
if value is null or not a Number
See Also
getNumber, getValue, SpinnerModel#addChangeListener