java.lang.Object javax.swing.AbstractSpinnerModel javax.swing.SpinnerDateModel
public class SpinnerDateModel
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
则生成一个提前 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
就会收到通知。
JSpinner
,
SpinnerModel
,
AbstractSpinnerModel
,
SpinnerListModel
,
SpinnerNumberModel
,
Calendar.add(int, int)
字段摘要 |
---|
从类 javax.swing.AbstractSpinnerModel 继承的字段 |
---|
listenerList |
构造方法摘要 | |
---|---|
SpinnerDateModel() 构造一个 SpinnerDateModel ,其初始 value 为当前日期,calendarField 等于 Calendar.DAY_OF_MONTH ,且没有 start /end 限制。 |
|
SpinnerDateModel(Date value, Comparable start, Comparable end, int calendarField) 创建一个表示 start 和 end 之间的日期序列的 SpinnerDateModel 。 |
方法摘要 | |
---|---|
int |
getCalendarField() 返回由 nextValue 和 previousValue 方法添加或去掉的 Calendar 字段。 |
Date |
getDate() 返回此 Date 序列中的当前元素。 |
Comparable |
getEnd() 返回序列中的最后一个 Date 。 |
Object |
getNextValue() 返回序列中的下一个 Date ,如果下一个日期在 end 之后,则返回 null 。 |
Object |
getPreviousValue() 返回序列中上一个 Date ,如果上一个日期是在 start 之前,则返回 null 。 |
Comparable |
getStart() 返回序列中的第一个 Date 。 |
Object |
getValue() 返回此 Date 序列中的当前元素。 |
void |
setCalendarField(int calendarField) 更改由 nextValue 和 previousValue 方法计算的日期值更改的大小。 |
void |
setEnd(Comparable end) 更改此序列中 Date 的上限。 |
void |
setStart(Comparable start) 更改此序列中的日期下限。 |
void |
setValue(Object value) 设置此序列的当前 Date 。 |
从类 javax.swing.AbstractSpinnerModel 继承的方法 |
---|
addChangeListener, fireStateChanged, getChangeListeners, getListeners, removeChangeListener |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public SpinnerDateModel(Date value, Comparable start, Comparable end, int calendarField)
start
和
end
之间的日期序列的
SpinnerDateModel
。
nextValue
和
previousValue
方法通过向前或向后调整由
calendarField
时间单位表示的当前日期
value
计算该序列的元素。有关增加或减少
Calendar
field
的含义的精确描述,请参阅
java.util.Calendar
中的
add
方法。
start
和 end
参数可以为 null
,以指示该范围没有上下边界。如果 value
或 calendarField
为 null
,或者指定了 start
和 end
且其值为 mininum > 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
无效,或者下面的表达式为 false:
(start <= value <= end)
。
Calendar.add(int, int)
,
setValue(java.lang.Object)
,
setStart(java.lang.Comparable)
,
setEnd(java.lang.Comparable)
,
setCalendarField(int)
public SpinnerDateModel()
SpinnerDateModel
,其初始
value
为当前日期,
calendarField
等于
Calendar.DAY_OF_MONTH
,且没有
start
/
end
限制。
方法详细信息 |
---|
public void setStart(Comparable start)
start
为
null
,则不存在下限。此处不进行边界检查:新起始值可能会使该构造方法强制执行的
(start <= value <= end)
不变式失效。这是为了简化对该模型的更新。很自然,调用
nextValue
、
previousValue
或
setValue
方法之前应该确保该不变式为 true。
该属性通常是一个 Date
,但是它可以使用一个具有用于 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()
,
setEnd(java.lang.Comparable)
,
AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
public Comparable getStart()
Date
。
start
属性的值
setStart(java.lang.Comparable)
public void setEnd(Comparable end)
Date
的上限。如果
start
为
null
,则不存在上限。此处不进行边界检查:新起始值可能会使该构造方法强制执行的
(start <= value <= end)
不变式失效。这是为了简化对该模型的更新。很自然,调用
nextValue
、
previousValue
或
setValue
方法之前应该确保该不变式为 true。
该属性通常是一个 Date
,但是它可以使用一个具有用于 Date
的 compareTo
方法的 Comparable
。请参见 setStart
以获得一个示例。
如果 end
已经更改,则此方法会触发一个 ChangeEvent
。
end
- 定义序列中的最后一个日期
getEnd()
,
setStart(java.lang.Comparable)
,
AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
public Comparable getEnd()
Date
。
end
属性的值
setEnd(java.lang.Comparable)
public void setCalendarField(int calendarField)
nextValue
和
previousValue
方法计算的日期值更改的大小。
calendarField
参数必须是其中一个
Calendar
字段常量,如
Calendar.MONTH
或
Calendar.MINUTE
。
nextValue
和
previousValue
方法使用
Calendar.add
方法将指定
Calendar
字段只向前或向后移动一个单位。要慎重使用此方法,因为有些 UI 可能在向光标下旋转字段提交编辑之前设置 calendarField。如果只希望旋转一个字段,则可以为 setCalendarField 调用创建子类并忽略 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)
public int getCalendarField()
nextValue
和
previousValue
方法添加或去掉的
Calendar
字段。
calendarField
属性的值
setCalendarField(int)
public Object getNextValue()
Date
,如果下一个日期在
end
之后,则返回
null
。
SpinnerModel
中的
getNextValue
Date
,如果下一个日期是在
end
之后,则返回
null
。
SpinnerModel.getNextValue()
,
getPreviousValue()
,
setCalendarField(int)
public Object getPreviousValue()
Date
,如果上一个日期是在
start
之前,则返回
null
。
SpinnerModel
中的
getPreviousValue
Date
,如果上一个日期在
start
之前,则返回
null
SpinnerModel.getPreviousValue()
,
getNextValue()
,
setCalendarField(int)
public Date getDate()
Date
序列中的当前元素。此方法等效于
(Date)getValue
。
value
属性
setValue(java.lang.Object)
public Object getValue()
Date
序列中的当前元素。
SpinnerModel
中的
getValue
value
属性
setValue(java.lang.Object)
,
getDate()
public void setValue(Object value)
Date
。如果
value
为
null
,则抛出一个
IllegalArgumentException
。此处不进行边界检查:新值可能会使该构造方法强制执行的
(start <= value < end)
不变式失效。很自然,调用
nextValue
、
previousValue
或
setValue
方法之前应该确保
(start <= value <= maximum)
不变式为 true。
如果 value
已经更改,则此方法会触发一个 ChangeEvent
。
SpinnerModel
中的
setValue
value
- 此序列的当前(非
null
)
Date
IllegalArgumentException
- 如果值为
null
或不是一个
Date
getDate()
,
getValue()
,
AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)