- java.lang.Object
-
- javax.swing.AbstractSpinnerModel
-
- javax.swing.SpinnerDateModel
-
- All Implemented Interfaces:
- Serializable, SpinnerModel
public class SpinnerDateModel extends AbstractSpinnerModel implements Serializable
ASpinnerModel
for sequences ofDate
s. The upper and lower bounds of the sequence are defined by properties calledstart
andend
and the size of the increase or decrease computed by thenextValue
andpreviousValue
methods is defined by a property calledcalendarField
. Thestart
andend
properties can benull
to indicate that the sequence has no lower or upper limit.The value of the
calendarField
property must be one of thejava.util.Calendar
constants that specify a field within aCalendar
. ThegetNextValue
andgetPreviousValue
methods change the date forward or backwards by this amount. For example, ifcalendarField
isCalendar.DAY_OF_WEEK
, thennextValue
produces aDate
that's 24 hours after the currentvalue
, andpreviousValue
produces aDate
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
. TheChangeListeners
are notified whenever the modelsvalue
,calendarField
,start
, orend
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
Constructors Constructor and Description SpinnerDateModel()
Constructs aSpinnerDateModel
whose initialvalue
is the current date,calendarField
is equal toCalendar.DAY_OF_MONTH
, and for which there are nostart
/end
limits.SpinnerDateModel(Date value, Comparable start, Comparable end, int calendarField)
Creates aSpinnerDateModel
that represents a sequence of dates betweenstart
andend
.
-
Method Summary
Methods Modifier and Type Method and Description int
getCalendarField()
Returns theCalendar
field that is added to or subtracted from by thenextValue
andpreviousValue
methods.Date
getDate()
Returns the current element in this sequence ofDate
s.Comparable
getEnd()
Returns the lastDate
in the sequence.Object
getNextValue()
Returns the nextDate
in the sequence, ornull
if the next date is afterend
.Object
getPreviousValue()
Returns the previousDate
in the sequence, ornull
if the previous date is beforestart
.Comparable
getStart()
Returns the firstDate
in the sequence.Object
getValue()
Returns the current element in this sequence ofDate
s.void
setCalendarField(int calendarField)
Changes the size of the date value change computed by thenextValue
andpreviousValue
methods.void
setEnd(Comparable end)
Changes the upper limit forDate
s in this sequence.void
setStart(Comparable start)
Changes the lower limit for Dates in this sequence.void
setValue(Object value)
Sets the currentDate
for this sequence.-
Methods inherited from class javax.swing.AbstractSpinnerModel
addChangeListener, fireStateChanged, getChangeListeners, getListeners, removeChangeListener
-
-
-
-
Constructor Detail
-
SpinnerDateModel
public SpinnerDateModel(Date value, Comparable start, Comparable end, int calendarField)
Creates aSpinnerDateModel
that represents a sequence of dates betweenstart
andend
. ThenextValue
andpreviousValue
methods compute elements of the sequence by advancing or reversing the current datevalue
by thecalendarField
time unit. For a precise description of what it means to increment or decrement aCalendar
field
, see theadd
method injava.util.Calendar
.The
start
andend
parameters can benull
to indicate that the range doesn't have an upper or lower bound. Ifvalue
orcalendarField
isnull
, or if bothstart
andend
are specified andmininum > maximum
then anIllegalArgumentException
is thrown. Similarly if(minimum <= value <= maximum)
is false, an IllegalArgumentException is thrown.- Parameters:
value
- the current (nonnull
) value of the modelstart
- the first date in the sequence ornull
end
- the last date in the sequence ornull
calendarField
- one ofCalendar.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
- ifvalue
orcalendarField
arenull
, ifcalendarField
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 aSpinnerDateModel
whose initialvalue
is the current date,calendarField
is equal toCalendar.DAY_OF_MONTH
, and for which there are nostart
/end
limits.
-
-
Method Detail
-
setStart
public void setStart(Comparable start)
Changes the lower limit for Dates in this sequence. Ifstart
isnull
, 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 thenextValue
,previousValue
, orsetValue
methods.Typically this property is a
Date
however it's possible to use aComparable
with acompareTo
method for Dates. For examplestart
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 aClassCastException
if theObject
passed tocompareTo(Object)
is not aDate
.This method fires a
ChangeEvent
if thestart
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 firstDate
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 forDate
s in this sequence. Ifstart
isnull
, 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 thenextValue
,previousValue
, orsetValue
methods.Typically this property is a
Date
however it's possible to useComparable
with acompareTo
method forDate
s. SeesetStart
for an example.This method fires a
ChangeEvent
if theend
has changed.- Parameters:
end
- defines the last date in the sequence- See Also:
getEnd()
,setStart(java.lang.Comparable)
,AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
-
getEnd
public Comparable getEnd()
Returns the lastDate
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 thenextValue
andpreviousValue
methods. ThecalendarField
parameter must be one of theCalendar
field constants likeCalendar.MONTH
orCalendar.MINUTE
. ThenextValue
andpreviousValue
methods simply move the specifiedCalendar
field forward or backward by one unit with theCalendar.add
method. You should use this method with care as some UIs may set the calendarField before commiting the edit to spin the field under the cursor. If you only want one field to spin you can subclass and ignore the setCalendarField calls.- Parameters:
calendarField
- one ofCalendar.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 method fires a
ChangeEvent
if thecalendarField
has changed.- See Also:
getCalendarField()
,getNextValue()
,getPreviousValue()
,Calendar.add(int, int)
,AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
-
getCalendarField
public int getCalendarField()
Returns theCalendar
field that is added to or subtracted from by thenextValue
andpreviousValue
methods.- Returns:
- the value of the
calendarField
property - See Also:
setCalendarField(int)
-
getNextValue
public Object getNextValue()
Returns the nextDate
in the sequence, ornull
if the next date is afterend
.- Specified by:
getNextValue
in interfaceSpinnerModel
- Returns:
- the next
Date
in the sequence, ornull
if the next date is afterend
. - See Also:
SpinnerModel.getNextValue()
,getPreviousValue()
,setCalendarField(int)
-
getPreviousValue
public Object getPreviousValue()
Returns the previousDate
in the sequence, ornull
if the previous date is beforestart
.- Specified by:
getPreviousValue
in interfaceSpinnerModel
- Returns:
- the previous
Date
in the sequence, ornull
if the previous date is beforestart
- See Also:
SpinnerModel.getPreviousValue()
,getNextValue()
,setCalendarField(int)
-
getDate
public Date getDate()
Returns the current element in this sequence ofDate
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 ofDate
s.- Specified by:
getValue
in interfaceSpinnerModel
- Returns:
- the
value
property - See Also:
setValue(java.lang.Object)
,getDate()
-
setValue
public void setValue(Object value)
Sets the currentDate
for this sequence. Ifvalue
isnull
, anIllegalArgumentException
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 thenextValue
,previousValue
, orsetValue
methods.This method fires a
ChangeEvent
if thevalue
has changed.- Specified by:
setValue
in interfaceSpinnerModel
- Parameters:
value
- the current (nonnull
)Date
for this sequence- Throws:
IllegalArgumentException
- if value isnull
or not aDate
- See Also:
getDate()
,getValue()
,AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
-
-
Nederlandse vertaling
U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.
Bij voorbaat dank.
Document heeft de 11/06/2005 gemaakt, de laatste keer de 04/03/2020 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/java-api-rf-javax/swing/SpinnerDateModel.html
De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.
Referenties
Deze verwijzingen en links verwijzen naar documenten die geraadpleegd zijn tijdens het schrijven van deze pagina, of die aanvullende informatie kunnen geven, maar de auteurs van deze bronnen kunnen niet verantwoordelijk worden gehouden voor de inhoud van deze pagina.
De auteur Deze site is als enige verantwoordelijk voor de manier waarop de verschillende concepten, en de vrijheden die met de referentiewerken worden genomen, hier worden gepresenteerd. Vergeet niet dat u meerdere broninformatie moet doorgeven om het risico op fouten te verkleinen.