- 所有已实现的接口:
-
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.ERACalendar.YEARCalendar.MONTHCalendar.WEEK_OF_YEARCalendar.WEEK_OF_MONTHCalendar.DAY_OF_MONTHCalendar.DAY_OF_YEARCalendar.DAY_OF_WEEKCalendar.DAY_OF_WEEK_IN_MONTHCalendar.AM_PMCalendar.HOURCalendar.HOUR_OF_DAYCalendar.MINUTECalendar.SECONDCalendar.MILLISECOND
此模型继承了ChangeListener。每当模型的value、calendarField、start或end属性更改时,都会通知ChangeListeners。
- 自:
- 1.4
- 参见:
-
Field Summary
Fields declared in class javax.swing.AbstractSpinnerModel
listenerList -
Constructor Summary
ConstructorsConstructorDescription构造一个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序列中的当前元素。voidsetCalendarField(int calendarField) 更改nextValue和previousValue方法计算的日期值更改的大小。voidsetEnd(Comparable<Date> end) 更改此序列中Date的下限。voidsetStart(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时间单位向前或向后推进来计算序列的元素。有关增加或减少Calendarfield的确切描述,请参阅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.ERACalendar.YEARCalendar.MONTHCalendar.WEEK_OF_YEARCalendar.WEEK_OF_MONTHCalendar.DAY_OF_MONTHCalendar.DAY_OF_YEARCalendar.DAY_OF_WEEKCalendar.DAY_OF_WEEK_IN_MONTHCalendar.AM_PMCalendar.HOURCalendar.HOUR_OF_DAYCalendar.MINUTECalendar.SECONDCalendar.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.ERACalendar.YEARCalendar.MONTHCalendar.WEEK_OF_YEARCalendar.WEEK_OF_MONTHCalendar.DAY_OF_MONTHCalendar.DAY_OF_YEARCalendar.DAY_OF_WEEKCalendar.DAY_OF_WEEK_IN_MONTHCalendar.AM_PMCalendar.HOURCalendar.HOUR_OF_DAYCalendar.MINUTECalendar.SECONDCalendar.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 - 参见:
-