- java.lang.Object
-
- javax.swing.AbstractSpinnerModel
-
- javax.swing.SpinnerDateModel
-
- All Implemented Interfaces:
-
Serializable
,SpinnerModel
public class SpinnerDateModel extends AbstractSpinnerModel implements Serializable
甲SpinnerModel
为序列Date
秒。 序列的上限和下限由称为start
和end
的属性定义,由nextValue
和previousValue
方法计算的增加或减少的大小由称为calendarField
的属性定义。start
和end
属性可以是null
来表示序列没有下限或上限。calendarField
属性的值必须是指定java.util.Calendar
中的字段的java.util.Calendar
常量Calendar
。getNextValue
和getPreviousValue
方法将日期向前或向后更改此金额。 例如,如果calendarField
是Calendar.DAY_OF_WEEK
,那么nextValue
产生一个Date
,这是当前的value
后24小时,而previousValue
是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
。 该ChangeListeners
通知每当模型value
,calendarField
,start
,或end
性能的变化。- 从以下版本开始:
- 1.4
- 另请参见:
-
JSpinner
,SpinnerModel
,AbstractSpinnerModel
,SpinnerListModel
,SpinnerNumberModel
,Calendar.add(int, int)
, Serialized Form
-
-
Field Summary
-
Fields inherited from class javax.swing.AbstractSpinnerModel
listenerList
-
-
构造方法摘要
构造方法 Constructor 描述 SpinnerDateModel()
构造一个SpinnerDateModel
,其初始value
是当前日期,calendarField
等于Calendar.DAY_OF_MONTH
,以及用于其中有没有start
/end
限制。SpinnerDateModel(Date value, Comparable<Date> start, Comparable<Date> end, int calendarField)
创建一个SpinnerDateModel
,代表start
和end
之间的日期序列。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 int
getCalendarField()
返回Calendar
字段被添加到或从由所述减去nextValue
种previousValue
方法。Date
getDate()
以Date
s的顺序返回当前元素。Comparable<Date>
getEnd()
返回序列中最后一个Date
。Object
getNextValue()
返回下Date
序列中,或null
如果下一个日期是后end
。Object
getPreviousValue()
返回以前Date
序列中,或null
如果上一个日期是前start
。Comparable<Date>
getStart()
返回序列中的第一个Date
。Object
getValue()
返回此序列中的当前元素Date
s。void
setCalendarField(int calendarField)
更改由nextValue
和previousValue
方法计算的日期值更改的大小。void
setEnd(Comparable<Date> end)
按此顺序更改Date
s的上限。void
setStart(Comparable<Date> start)
更改此顺序中日期的下限。void
setValue(Object value)
为此序列设置当前的Date
。-
Methods inherited from class javax.swing.AbstractSpinnerModel
addChangeListener, fireStateChanged, getChangeListeners, getListeners, removeChangeListener
-
-
-
-
构造方法详细信息
-
SpinnerDateModel
public SpinnerDateModel(Date value, Comparable<Date> start, Comparable<Date> end, int calendarField)
创建一个SpinnerDateModel
,表示start
和end
之间的日期序列。nextValue
和previousValue
方法通过按calendarField
时间单位推进或反转当前日期value
来计算序列的元素。 对于意味着什么递增或递减一个精确的描述Calendar
field
,参见add
在方法java.util.Calendar
。start
和end
参数可以是null
以表明范围没有上限或下限。 如果value
或者calendarField
为null
,或者如果两个start
和end
指定并minimum > maximum
那么IllegalArgumentException
被抛出。 类似地,如果(minimum <= value <= maximum)
为false,则抛出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)
。 - 另请参见:
-
Calendar.add(int, int)
,setValue(java.lang.Object)
,setStart(java.lang.Comparable<java.util.Date>)
,setEnd(java.lang.Comparable<java.util.Date>)
,setCalendarField(int)
-
SpinnerDateModel
public SpinnerDateModel()
构造一个SpinnerDateModel
,其初始value
是当前日期,calendarField
等于Calendar.DAY_OF_MONTH
,以及用于其中有没有start
/end
限制。
-
-
方法详细信息
-
setStart
public void setStart(Comparable<Date> start)
更改此顺序中日期的下限。 如果start
是null
,那么没有下限。 在这里没有边界检查:新的起始值可能使由构造函数执行的(start <= value <= end)
不变量无效。 这是为了简化更新模型。 当然应该保证不变的是调用之前真nextValue
,previousValue
,或setValue
方法。通常这个属性是一个
Date
但是可以使用Comparable
和compareTo
的日期。 例如,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); } }
注意上面的例子会抛出一个ClassCastException
如果Object
传递给compareTo(Object)
不是一个Date
。如果
start
已更改,此方法将触发ChangeEvent
。- 参数
-
start
- 定义序列中的第一个日期 - 另请参见:
-
getStart()
,setEnd(java.lang.Comparable<java.util.Date>)
,AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
-
getStart
public Comparable<Date> getStart()
返回序列中的第一个Date
。- 结果
-
该值为
start
属性 - 另请参见:
-
setStart(java.lang.Comparable<java.util.Date>)
-
setEnd
public void setEnd(Comparable<Date> end)
按此顺序更改Date
s的上限。 如果start
是null
,那么没有上限。 在这里没有界限检查:新的起始值可能使由构造函数执行的(start <= value <= end)
不变量无效。 这是为了简化更新模型。 当然,应该保证不变的是调用之前真nextValue
,previousValue
,或setValue
方法。通常,这个属性是
Date
但是它可以使用Comparable
与compareTo
方法Date
秒。 参见setStart
的一个例子。如果
end
已更改,此方法将触发ChangeEvent
。- 参数
-
end
- 定义序列中的最后一个日期 - 另请参见:
-
getEnd()
,setStart(java.lang.Comparable<java.util.Date>)
,AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
-
getEnd
public Comparable<Date> getEnd()
返回序列中最后一个Date
。- 结果
-
的价值
end
属性 - 另请参见:
-
setEnd(java.lang.Comparable<java.util.Date>)
-
setCalendarField
public void setCalendarField(int calendarField)
更改由nextValue
和previousValue
方法计算的日期值更改的大小。calendarField
参数必须是Calendar
字段常量之一,如Calendar.MONTH
或Calendar.MINUTE
。 的nextValue
种previousValue
方法简单地移动至指定Calendar
由一个单元与场向前或向后Calendar.add
方法。 您应该谨慎使用此方法,因为一些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()
,getNextValue()
,getPreviousValue()
,Calendar.add(int, int)
,AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
-
getCalendarField
public int getCalendarField()
返回nextValue
和previousValue
方法添加或减去的Calendar
字段。- 结果
-
的价值
calendarField
属性 - 另请参见:
-
setCalendarField(int)
-
getNextValue
public Object getNextValue()
返回下Date
序列中,或null
如果下一个日期是后end
。- Specified by:
-
getNextValue
接口SpinnerModel
- 结果
-
下一个
Date
的序列,或null
如果下一个日期是在end
之后。 - 另请参见:
-
SpinnerModel.getNextValue()
,getPreviousValue()
,setCalendarField(int)
-
getPreviousValue
public Object getPreviousValue()
返回以前Date
序列中,或null
如果上一个日期是前start
。- Specified by:
-
getPreviousValue
接口SpinnerModel
- 结果
-
前一个
Date
的序列,或null
如果以前的日期是在start
之前 - 另请参见:
-
SpinnerModel.getPreviousValue()
,getNextValue()
,setCalendarField(int)
-
getDate
public Date getDate()
返回此序列中的当前元素Date
s。 此方法相当于(Date)getValue
。- 结果
-
value
属性 - 另请参见:
-
setValue(java.lang.Object)
-
getValue
public Object getValue()
返回此序列中的当前元素Date
s。- Specified by:
-
getValue
在接口SpinnerModel
- 结果
-
value
属性 - 另请参见:
-
setValue(java.lang.Object)
,getDate()
-
setValue
public void setValue(Object value)
为此序列设置当前的Date
。 如果value
为null
,则抛出IllegalArgumentException
。 这里没有界限检查:新值可能使由构造函数执行的(start <= value < end)
不变量无效。 当然,应该确保(start <= value <= maximum)
不变的是调用之前真nextValue
,previousValue
,或setValue
方法。如果
value
发生变化,此方法将触发ChangeEvent
。- Specified by:
-
setValue
在接口SpinnerModel
- 参数
-
value
- 此序列的当前(非null
)Date
- 异常
-
IllegalArgumentException
- 如果值为null
或不是Date
- 另请参见:
-
getDate()
,getValue()
,AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
-
-