public class SpinnerDateModel extends AbstractSpinnerModel implements Serializable
SpinnerModel
为Date的Date
。
序列的上限和下限被称为属性定义start
和end
,并通过所计算的增加或减少的大小nextValue
种previousValue
方法由称为属性定义calendarField
。
start
和end
属性可以是null
以表示序列没有下限或上限。
该值calendarField
属性必须是一个java.util.Calendar
一个内指定一个字段的常量Calendar
。 getNextValue
和getPreviousValue
方法将日期向前或向后更改此金额。 例如,如果calendarField
是Calendar.DAY_OF_WEEK
,则nextValue
产生Date
这是24小时后的电流value
和previousValue
产生Date
这之前24小时。
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
性能的变化。
JSpinner
, SpinnerModel
, AbstractSpinnerModel
, SpinnerListModel
, SpinnerNumberModel
, Calendar.add(int, int)
listenerList
Constructor and Description |
---|
SpinnerDateModel()
构造一个
SpinnerDateModel ,其初始
value 是当前日期,
calendarField 等于
Calendar.DAY_OF_MONTH ,以及用于其中有没有
start /
end 限制。
|
SpinnerDateModel(Date value, Comparable start, Comparable end, int calendarField)
创建一个
SpinnerDateModel ,代表
start 和
end 之间的日期序列。
|
Modifier and Type | Method and Description |
---|---|
int |
getCalendarField()
返回
nextValue 和
previousValue 方法添加或减去的
Calendar 字段。
|
Date |
getDate()
返回
Date 的序列中的当前元素。
|
Comparable |
getEnd()
返回序列中的最后
Date 。
|
Object |
getNextValue()
返回下一个
Date 序列中,或
null 如果下一个日期是后
end 。
|
Object |
getPreviousValue()
返回以前
Date 的顺序,或
null ,如果上一个日期是前
start 。
|
Comparable |
getStart()
返回序列中的第一个
Date 。
|
Object |
getValue()
返回此序列中的当前元素
Date s。
|
void |
setCalendarField(int calendarField)
更改由
nextValue 和
previousValue 方法计算的日期值更改的大小。
|
void |
setEnd(Comparable end)
按此顺序更改
Date 的上限。
|
void |
setStart(Comparable start)
更改此顺序中日期的下限。
|
void |
setValue(Object value)
设置此序列的当前
Date 。
|
addChangeListener, fireStateChanged, getChangeListeners, getListeners, removeChangeListener
public SpinnerDateModel(Date value, Comparable start, Comparable 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
无效,或者如果以下表达式为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)
函数执行的(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)
,
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)
函数执行的885326525245不变量无效。
这是为了简化更新模型。
当然,应该保证不变的是调用之前真正nextValue
, previousValue
,或setValue
方法。
通常这个属性是Date
但是对于Date
s可以使用Comparable
compareTo
方法。 参见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
由一个单元与场向前或向后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)
public int getCalendarField()
nextValue
和
previousValue
方法添加或减去的
Calendar
字段。
calendarField
属性
setCalendarField(int)
public Object getNextValue()
Date
序列中,或
null
如果下一个日期是后
end
。
getNextValue
在接口
SpinnerModel
Date
顺序,或
null
如果下一个日期是在
end
之后。
SpinnerModel.getNextValue()
,
getPreviousValue()
,
setCalendarField(int)
public Object getPreviousValue()
Date
的顺序,或
null
,如果上一个日期是前
start
。
getPreviousValue
在接口
SpinnerModel
Date
顺序,或
null
如果以前的日期是在
start
之前
SpinnerModel.getPreviousValue()
,
getNextValue()
,
setCalendarField(int)
public Date getDate()
Date
s。
此方法相当于(Date)getValue
。
value
属性
setValue(java.lang.Object)
public Object getValue()
Date
的序列中的当前元素。
getValue
在接口
SpinnerModel
value
属性
setValue(java.lang.Object)
,
getDate()
public void setValue(Object value)
Date
。
如果value
是null
,则抛出一个IllegalArgumentException
。
这里没有边界检查:新值可能会使(start <= value < end)
函数执行的(start <= value < end)不变量无效。
当然,应该确保(start <= value <= maximum)
不变的是调用之前真正nextValue
, previousValue
,或setValue
方法。
如果value
已更改,此方法将触发ChangeEvent
。
setValue
在界面
SpinnerModel
value
- 此序列的当前(非
null
)
Date
IllegalArgumentException
- 如果值为
null
或不是
Date
getDate()
,
getValue()
,
AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)