- 所有已实现的接口:
-
Serializable
,SpinnerModel
Date
序列的SpinnerModel
。序列的上限和下限由名为start
和end
的属性定义,nextValue
和previousValue
方法计算的增加或减少的大小由名为calendarField
的属性定义。 start
和end
属性可以为null
,表示序列没有下限或上限。
calendarField
属性的值必须是指定Calendar
中的字段的java.util.Calendar
常量之一。 getNextValue
和getPreviousValue
方法按照此数量向前或向后更改日期。例如,如果calendarField
是Calendar.DAY_OF_WEEK
,那么nextValue
会产生比当前value
晚24小时的Date
,而previousValue
会产生比当前value
早24小时的Date
。
calendarField
的合法值为:
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
此模型继承了ChangeListener
。每当模型的value
、calendarField
、start
或end
属性更改时,都会通知ChangeListeners
。
- 自:
- 1.4
- 参见:
-
Field Summary
Fields declared in class javax.swing.AbstractSpinnerModel
listenerList
-
Constructor Summary
ConstructorDescription构造一个SpinnerDateModel
,其初始value
为当前日期,calendarField
等于Calendar.DAY_OF_MONTH
,并且没有start
/end
限制。SpinnerDateModel
(Date value, Comparable<Date> start, Comparable<Date> end, int calendarField) 创建一个代表start
和end
之间日期序列的SpinnerDateModel
。 -
Method Summary
Modifier and TypeMethodDescriptionint
返回nextValue
和previousValue
方法添加或减去的Calendar
字段。getDate()
返回此Date
序列中的当前元素。getEnd()
返回序列中的最后一个Date
。返回序列中的下一个Date
,如果下一个日期在end
之后则返回null
。返回序列中的前一个Date
,如果前一个日期在start
之前则返回null
。getStart()
返回序列中的第一个Date
。getValue()
返回此Date
序列中的当前元素。void
setCalendarField
(int calendarField) 更改nextValue
和previousValue
方法计算的日期值更改的大小。void
setEnd
(Comparable<Date> end) 更改此序列中Date
的下限。void
setStart
(Comparable<Date> start) 更改此序列中日期的上限。void
设置此序列的当前Date
。Methods declared in class javax.swing.AbstractSpinnerModel
addChangeListener, fireStateChanged, getChangeListeners, getListeners, removeChangeListener
-
Constructor Details
-
SpinnerDateModel
public SpinnerDateModel(Date value, Comparable<Date> start, Comparable<Date> end, int calendarField) 创建一个代表start
和end
之间日期序列的SpinnerDateModel
。nextValue
和previousValue
方法通过将当前日期value
按calendarField
时间单位向前或向后推进来计算序列的元素。有关增加或减少Calendar
field
的确切描述,请参阅java.util.Calendar
中的add
方法。start
和end
参数可以为null
,表示范围没有上限或下限。如果value
或calendarField
为null
,或者如果指定了start
和end
且minimum > maximum
,则会抛出IllegalArgumentException
。类似地,如果(minimum <= value <= maximum)
为假,则会抛出IllegalArgumentException。- 参数:
-
value
- 模型的当前(非null
)值 -
start
- 序列中的第一个日期或null
-
end
- 序列中的最后一个日期或null
-
calendarField
- 以下之一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
- 抛出:
-
IllegalArgumentException
- 如果value
或calendarField
为null
,如果calendarField
无效,或者如果以下表达式为假:(start <= value <= end)
。 - 参见:
-
SpinnerDateModel
public SpinnerDateModel()构造一个SpinnerDateModel
,其初始value
为当前日期,calendarField
等于Calendar.DAY_OF_MONTH
,并且没有start
/end
限制。
-
-
Method Details
-
setStart
更改此序列中日期的下限。如果start
为null
,则没有下限。此处不执行边界检查: 新的开始值可能会使构造函数强制执行的(start <= value <= end)
不变式无效。这是为了简化更新模型。自然地,在调用nextValue
、previousValue
或setValue
方法之前,应确保不变式为真。通常,此属性是一个
Date
,但也可以使用具有compareTo
方法的Comparable
来表示日期。例如,start
可能是以下类的实例: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); } }
请注意,如果传递给compareTo(Object)
的Object
不是Date
,则上述示例将抛出ClassCastException
。如果
start
已更改,则此方法会触发ChangeEvent
。- 参数:
-
start
- 定义序列中的第一个日期 - 参见:
-
getStart
返回序列中的第一个Date
。- 返回:
-
start
属性的值 - 参见:
-
setEnd
更改此序列中日期的上限。如果start
为null
,则没有上限。此处不执行边界检查: 新的开始值可能会使构造函数强制执行的(start <= value <= end)
不变式无效。这是为了简化更新模型。自然地,在调用nextValue
、previousValue
或setValue
方法之前,应确保不变式为真。通常,此属性是一个
Date
,但也可以使用具有compareTo
方法的Comparable
来表示日期。有关Date
的Comparable
的使用,请参见setStart
的示例。如果
end
已更改,则此方法会触发ChangeEvent
。- 参数:
-
end
- 定义序列中的最后一个日期 - 参见:
-
getEnd
返回序列中的最后一个Date
。- 返回:
-
end
属性的值 - 参见:
-
setCalendarField
public void setCalendarField(int calendarField) 更改由nextValue
和previousValue
方法计算的日期值更改的大小。calendarField
参数必须是Calendar
字段常量之一,如Calendar.MONTH
或Calendar.MINUTE
。nextValue
和previousValue
方法只是使用Calendar.add
方法将指定的Calendar
字段向前或向后移动一个单位。 您应谨慎使用此方法,因为某些UI可能会在提交编辑之前设置calendarField以在光标下的字段旋转。 如果您只想旋转一个字段,可以创建子类并忽略setCalendarField调用。- 参数:
-
calendarField
- 其中之一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
如果
calendarField
已更改,则此方法会触发ChangeEvent
。 - 参见:
-
getCalendarField
public int getCalendarField()返回由nextValue
和previousValue
方法添加或减去的Calendar
字段。- 返回:
-
calendarField
属性的值 - 参见:
-
getNextValue
返回序列中的下一个Date
,如果下一个日期在end
之后则返回null
。- 指定者:
-
getNextValue
在接口SpinnerModel
中 - 返回:
-
序列中的下一个
Date
,如果下一个日期在end
之后则返回null
。 - 参见:
-
getPreviousValue
返回序列中的前一个Date
,如果前一个日期在start
之前则返回null
。- 指定者:
-
getPreviousValue
在接口SpinnerModel
中 - 返回:
-
序列中的前一个
Date
,如果前一个日期在start
之前则返回null
- 参见:
-
getDate
返回此Date
序列中的当前元素。此方法等效于(Date)getValue
。- 返回:
-
value
属性 - 参见:
-
getValue
返回此Date
序列中的当前元素。- 指定者:
-
getValue
在接口SpinnerModel
中 - 返回:
-
value
属性 - 参见:
-
setValue
设置此序列的当前Date
。如果value
为null
,则会抛出IllegalArgumentException
。 这里不进行边界检查:新值可能会使构造函数强制执行的(start <= value < end)
不变式无效。 当然,在调用nextValue
、previousValue
或setValue
方法之前,应确保(start <= value <= maximum)
不变式为真。如果
value
已更改,则此方法会触发ChangeEvent
。- 指定者:
-
setValue
在接口SpinnerModel
中 - 参数:
-
value
- 此序列的当前(非null
)Date
- 抛出:
-
IllegalArgumentException
- 如果值为null
或不是Date
- 参见:
-