Module  java.desktop
软件包  javax.swing

Class SpinnerDateModel

  • All Implemented Interfaces:
    SerializableSpinnerModel


    public class SpinnerDateModel
    extends AbstractSpinnerModel
    implements Serializable
    SpinnerModel为序列Date秒。 序列的上限和下限由称为startend的属性定义,由nextValuepreviousValue方法计算的增加或减少的大小由称为calendarField的属性定义。 startend属性可以是null来表示序列没有下限或上限。

    calendarField属性的值必须是指定java.util.Calendar中的字段的java.util.Calendar常量Calendar getNextValuegetPreviousValue方法将日期向前或向后更改此金额。 例如,如果calendarFieldCalendar.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
    但是,一些UI可能会在提交编辑之前设置calendarField以旋转光标下的字段。 如果你只想要一个字段来旋转,你可以子类化并忽略setCalendarField调用。

    该模式继承了一个ChangeListener ChangeListeners通知每当模型valuecalendarFieldstart ,或end性能的变化。

    从以下版本开始:
    1.4
    另请参见:
    JSpinnerSpinnerModelAbstractSpinnerModelSpinnerListModelSpinnerNumberModelCalendar.add(int, int)Serialized Form
    • 构造方法详细信息

      • SpinnerDateModel

        public SpinnerDateModel​(Date value,
                                Comparable<Date> start,
                                Comparable<Date> end,
                                int calendarField)
        创建一个SpinnerDateModel ,表示startend之间的日期序列。 nextValuepreviousValue方法通过按calendarField时间单位推进或反转当前日期value来计算序列的元素。 对于意味着什么递增或递减一个精确的描述Calendar field ,参见add在方法java.util.Calendar

        startend参数可以是null以表明范围没有上限或下限。 如果value或者calendarFieldnull ,或者如果两个startend指定并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 - 如果 valuecalendarFieldnull ,如果 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)
        更改此顺序中日期的下限。 如果startnull ,那么没有下限。 在这里没有边界检查:新的起始值可能使由构造函数执行的(start <= value <= end)不变量无效。 这是为了简化更新模型。 当然应该保证不变的是调用之前真nextValuepreviousValue ,或setValue方法。

        通常这个属性是一个Date但是可以使用ComparablecompareTo的日期。 例如, 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)
      • setEnd

        public void setEnd​(Comparable<Date> end)
        按此顺序更改Date s的上限。 如果startnull ,那么没有上限。 在这里没有界限检查:新的起始值可能使由构造函数执行的(start <= value <= end)不变量无效。 这是为了简化更新模型。 当然,应该保证不变的是调用之前真nextValuepreviousValue ,或setValue方法。

        通常,这个属性是Date但是它可以使用ComparablecompareTo方法Date秒。 参见setStart的一个例子。

        如果end已更改,此方法将触发ChangeEvent

        参数
        end - 定义序列中的最后一个日期
        另请参见:
        getEnd()setStart(java.lang.Comparable<java.util.Date>)AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
      • setCalendarField

        public void setCalendarField​(int calendarField)
        更改由nextValuepreviousValue方法计算的日期值更改的大小。 calendarField参数必须是Calendar字段常量之一,如Calendar.MONTHCalendar.MINUTE nextValuepreviousValue方法简单地移动至指定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​()
        返回 nextValuepreviousValue方法添加或减去的 Calendar字段。
        结果
        的价值 calendarField属性
        另请参见:
        setCalendarField(int)
      • getDate

        public Date getDate​()
        返回此序列中的当前元素Date s。 此方法相当于(Date)getValue
        结果
        value属性
        另请参见:
        setValue(java.lang.Object)
      • setValue

        public void setValue​(Object value)
        为此序列设置当前的Date 如果valuenull ,则抛出IllegalArgumentException 这里没有界限检查:新值可能使由构造函数执行的(start <= value < end)不变量无效。 当然,应该确保(start <= value <= maximum)不变的是调用之前真nextValuepreviousValue ,或setValue方法。

        如果value发生变化,此方法将触发ChangeEvent

        Specified by:
        setValue在接口 SpinnerModel
        参数
        value - 此序列的当前(非 nullDate
        异常
        IllegalArgumentException - 如果值为 null或不是 Date
        另请参见:
        getDate()getValue()AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)