Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javax.swing
Class SpinnerDateModel

    java.lang.Object
      |
      +--javax.swing.AbstractSpinnerModel
            |
            +--javax.swing.SpinnerDateModel

All Implemented Interfaces:
  Serializable, SpinnerModel

public class SpinnerDateModel
extends AbstractSpinnerModel
implements Serializable

A `SpinnerModel` for sequences of `Date`s. The upper and lower bounds of the sequence are defined by properties called `start` and `end` and the size of the increase or decrease computed by the `nextValue` and `previousValue` methods is defined by a property called `calendarField`. The `start` and `end` properties can be `null` to indicate that the sequence has no lower or upper limit.

The value of the `calendarField` property must be one of the `java.util.Calendar` constants that specify a field within a `Calendar`. The `getNextValue` and `getPreviousValue` methods change the date forward or backwards by this amount. For example, if `calendarField` is `Calendar.DAY_OF_WEEK`, then `nextValue` produces a `Date` that's 24 hours after the current `value`, and `previousValue` produces a `Date` that's 24 hours earlier.

The legal values for `calendarField` are:

- `Calendar.ERA`
- `Calendar.YEAR`
- `Calendar.MONTH`
- `Calendar.WEEK_OF_YEAR`
- `Calendar.WEEK_OF_MONTH`
- `Calendar.DAY_OF_MONTH`
- `Calendar.DAY_OF_YEAR`
- `Calendar.DAY_OF_WEEK`
- `Calendar.DAY_OF_WEEK_IN_MONTH`
- `Calendar.AM_PM`
- `Calendar.HOUR`
- `Calendar.HOUR_OF_DAY`
- `Calendar.MINUTE`
- `Calendar.SECOND`
- `Calendar.MILLISECOND`

This model inherits a `ChangeListener`. The `ChangeListeners` are notified whenever the models `value`, `calendarField`, `start`, or `end` properties changes.

Since:
  1.4
See Also:
  `JSpinner`, `SpinnerModel`, `AbstractSpinnerModel`, `SpinnerListModel`, `SpinnerNumberModel`, `Calendar.add(int, int)`

Field Summary

Fields inherited from class javax.swing.AbstractSpinnerModel
`listenerList`

Constructor Summary
`SpinnerDateModel()` Constructs a `SpinnerDateModel` whose initial `value` is the current date, `calendarField` is equal to `Calendar.DAY_OF_MONTH`, and for which there are no `start`/`end` limits.
`SpinnerDateModel(Date value, Comparable start, Comparable end, int calendarField)` Creates a `SpinnerDateModel` that represents a sequence of dates between `start` and `end`.

Method Summary
`int` | `getCalendarField()` Returns the `Calendar` field that is added to or subtracted from by the `nextValue` and `previousValue` methods.
`Date` | `getDate()` Returns the current element in this sequence of `Date`s.
`Comparable` | `getEnd()` Returns the last `Date` in the sequence.
`Object` | `getNextValue()` Returns the next `Date` in the sequence, or `null` if the next date is after `end`.
`Object` | `getPreviousValue()` Returns the previous `Date` in the sequence, or `null` if the previous date is before `start`.
`Comparable` | `getStart()` Returns the first `Date` in the sequence.
`Object` | `getValue()` Returns the current element in this sequence of `Date`s.
`void` | `setCalendarField(int calendarField)` Changes the size of the date value change computed by the `nextValue` and `previousValue` methods.
`void` | `setEnd(Comparable end)` Changes the upper limit for `Date`s in this sequence.
`void` | `setStart(Comparable start)` Changes the lower limit for Dates in this sequence.
`void` | `setValue(Object value)` Sets the current `Date` for this sequence.

Methods inherited from class javax.swing.AbstractSpinnerModel
`addChangeListener, fireStateChanged, getChangeListeners, getListeners, removeChangeListener`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SpinnerDateModel

    public SpinnerDateModel(Date value,
                            Comparable start,
                            Comparable end,
                            int calendarField)

  Creates a `SpinnerDateModel` that represents a sequence of dates between `start` and `end`. The `nextValue` and `previousValue` methods compute elements of the sequence by advancing or reversing the current date `value` by the `calendarField` time unit. For a precise description of what it means to increment or decrement a `Calendar` `field`, see the `add` method in `java.util.Calendar`.

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

Parameters:
  `value` - the current (non `null`) value of the model
  `start` - the first date in the sequence or `null`
  `end` - the last date in the sequence or `null`
  `calendarField` - one of
  - `Calendar.ERA`
  - `Calendar.YEAR`
  - `Calendar.MONTH`
  - `Calendar.WEEK_OF_YEAR`
  - `Calendar.WEEK_OF_MONTH`
  - `Calendar.DAY_OF_MONTH`
  - `Calendar.DAY_OF_YEAR`
  - `Calendar.DAY_OF_WEEK`
  - `Calendar.DAY_OF_WEEK_IN_MONTH`
  - `Calendar.AM_PM`
  - `Calendar.HOUR`
  - `Calendar.HOUR_OF_DAY`
  - `Calendar.MINUTE`
  - `Calendar.SECOND`
  - `Calendar.MILLISECOND`
Throws:
  `IllegalArgumentException` - if `value` or `calendarField` are `null`, if `calendarField` isn't valid, or if the following expression is false: `(start <= value <= end)`.
See Also:
  `Calendar.add(int, int)`, `setValue(java.lang.Object)`, `setStart(java.lang.Comparable)`, `setEnd(java.lang.Comparable)`, `setCalendarField(int)`

### SpinnerDateModel

    public SpinnerDateModel()

  Constructs a `SpinnerDateModel` whose initial `value` is the current date, `calendarField` is equal to `Calendar.DAY_OF_MONTH`, and for which there are no `start`/`end` limits.

Method Detail

### setStart

    public void setStart(Comparable start)

  Changes the lower limit for Dates in this sequence. If `start` is `null`, then there is no lower limit. No bounds checking is done here: the new start value may invalidate the `(start <= value <= end)` invariant enforced by the constructors. This is to simplify updating the model. Naturally one should ensure that the invariant is true before calling the `nextValue`, `previousValue`, or `setValue` methods.

  Typically this property is a `Date` however it's possible to use a `Comparable` with a `compareTo` method for Dates. For example `start` might be an instance of a class like this:

       MyStartDate implements Comparable {
           long t = 12345;
           public int compareTo(Date d) {
                  return (t < d.getTime() ? -1 : (t == d.getTime() ? 0 : 1));
           }
           public int compareTo(Object o) {
                  return compareTo((Date)o);
           }
       }

  Note that the above example will throw a `ClassCastException` if the `Object` passed to `compareTo(Object)` is not a `Date`.

  This method fires a `ChangeEvent` if the `start` has changed.

  Parameters:
    `start` - defines the first date in the sequence
  See Also:
    `getStart()`, `setEnd(java.lang.Comparable)`, `AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)`

### getStart

    public Comparable getStart()

  Returns the first `Date` in the sequence.

  Returns:
    the value of the `start` property
  See Also:
    `setStart(java.lang.Comparable)`

### setEnd

    public void setEnd(Comparable end)

  Changes the upper limit for `Date`s in this sequence. If `start` is `null`, then there is no upper limit. No bounds checking is done here: the new start value may invalidate the `(start <= value <= end)` invariant enforced by the constructors. This is to simplify updating the model. Naturally, one should ensure that the invariant is true before calling the `nextValue`, `previousValue`, or `setValue` methods.

  Typically this property is a `Date` however it's possible to use `Comparable` with a `compareTo` method for `Date`s. See `setStart` for an example.

  This method fires a `ChangeEvent` if the `end` has changed.

  See Also:
    `getEnd()`, `setStart(java.lang.Comparable)`, `AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)`

### getEnd

    public Comparable getEnd()

  Returns the last `Date` in the sequence.

  Returns:
    the value of the `end` property
  See Also:
    `setEnd(java.lang.Comparable)`

### setCalendarField

    public void setCalendarField(int calendarField)

  Changes the size of the date value change computed by the `nextValue` and `previousValue` methods. The `calendarField` parameter must be one of the `Calendar` field constants like `Calendar.MONTH` or `Calendar.MINUTE`. The `nextValue` and `previousValue` methods simply move the specified `Calendar` field forward or backward by one unit with the `Calendar.add` method.

  See Also:
    `getCalendarField()`, `getNextValue()`, `getPreviousValue()`, `Calendar.add(int, int)`, `AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)`

### getCalendarField

    public int getCalendarField()

  Returns the `Calendar` field that is added to or subtracted from by the `nextValue` and `previousValue` methods.

  Returns:
    the value of the `calendarField` property
  See Also:
    `setCalendarField(int)`

### getNextValue

    public Object getNextValue()

  Returns the next `Date` in the sequence, or `null` if the next date is after `end`.

  Specified by:
    `getNextValue` in interface `SpinnerModel`
  Returns:
    the next `Date` in the sequence, or `null` if the next date is after `end`.
  See Also:
    `SpinnerModel.getNextValue()`, `getPreviousValue()`, `setCalendarField(int)`

### getPreviousValue

    public Object getPreviousValue()

  Returns the previous `Date` in the sequence, or `null` if the previous date is before `start`.

  Specified by:
    `getPreviousValue` in interface `SpinnerModel`
  Returns:
    the previous `Date` in the sequence, or `null` if the previous date is before `start`
  See Also:
    `SpinnerModel.getPreviousValue()`, `getNextValue()`, `setCalendarField(int)`

### getDate

    public Date getDate()

  Returns the current element in this sequence of `Date`s. This method is equivalent to `(Date)getValue`.

  Returns:
    the `value` property
  See Also:
    `setValue(java.lang.Object)`

### getValue

    public Object getValue()

  Returns the current element in this sequence of `Date`s.

  Specified by:
    `getValue` in interface `SpinnerModel`
  Returns:
    the `value` property
  See Also:
    `setValue(java.lang.Object)`, `getDate()`

### setValue

    public void setValue(Object value)

  Sets the current `Date` for this sequence. If `value` is `null`, an `IllegalArgumentException` is thrown. No bounds checking is done here: the new value may invalidate the `(start <= value < end)` invariant enforced by the constructors. Naturally, one should ensure that the `(start <= value <= maximum)` invariant is true before calling the `nextValue`, `previousValue`, or `setValue` methods.

  This method fires a `ChangeEvent` if the `value` has changed.

  Specified by:
    `setValue` in interface `SpinnerModel`
  Parameters:
    `value` - the current (non `null`) `Date` for this sequence
  Throws:
    `IllegalArgumentException` - if value is `null` or not a `Date`
  See Also:
    `getDate()`, `getValue()`, `AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.