JavaTM 2 Platform
Standard Ed. 6

javax.swing
類別 SpinnerDateModel

java.lang.Object
  繼承者 javax.swing.AbstractSpinnerModel
      繼承者 javax.swing.SpinnerDateModel
所有已實作的介面:
Serializable, SpinnerModel

public class SpinnerDateModel
extends AbstractSpinnerModel
implements Serializable

Date 序列的一個 SpinnerModel。序列的上下邊界由稱為 startend 的屬性定義,而通過 nextValuepreviousValue 方法計算的增加和減少的大小由稱作 calendarField 的屬性定義。startend 屬性可以為 null,以指示序列沒有下限和上限。

calendarField 屬性的值必須是在 Calendar 內指定某個欄位的其中一個 java.util.Calendar 常數。getNextValuegetPreviousValue 方法將日期向前或向後更改這些量。例如,如果 calendarFieldCalendar.DAY_OF_WEEK,則 nextValue 產生一個比當前 value 延後 24 小時的 Date,而 previousValue 則產生一個提前 24 小時的 Date

calendarField 的合法值為:

但是有些 UI 可能在向鼠標下旋轉欄位提交編輯之前設置 calendarField。如果只希望旋轉一個欄位,則可以為 setCalendarField 調用創建子類別並忽略 setCalendarField 調用。

此模型繼承一個 ChangeListener。每當模型 valuecalendarFieldstartend 屬性發生變化時,該 ChangeListeners 就會收到通知。

從以下版本開始:
1.4
另請參見:
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)
          創建一個表示 startend 之間的日期序列的 SpinnerDateModel
 
方法摘要
 int getCalendarField()
          返回由 nextValuepreviousValue 方法添加或去掉的 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)
          更改由 nextValuepreviousValue 方法計算的日期值更改的大小。
 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
 

建構子詳細資訊

SpinnerDateModel

public SpinnerDateModel(Date value,
                        Comparable start,
                        Comparable end,
                        int calendarField)
創建一個表示 startend 之間的日期序列的 SpinnerDateModelnextValuepreviousValue 方法通過向前或向後調整由 calendarField 時間單位表示的當前日期 value 計算該序列的元素。有關增加或減少 Calendar field 的含義的精確描述,請參閱 java.util.Calendar 中的 add 方法。

startend 參數可以為 null,以指示該範圍沒有上下邊界。如果 valuecalendarFieldnull,或者指定了 startend 且其值為 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 - 如果 valuecalendarFieldnull,如果 calendarField 無效,或者下面的表達式為 false:(start <= value <= end)
另請參見:
Calendar.add(int, int), setValue(java.lang.Object), setStart(java.lang.Comparable), setEnd(java.lang.Comparable), setCalendarField(int)

SpinnerDateModel

public SpinnerDateModel()
建構一個 SpinnerDateModel,其初始 value 為當前日期,calendarField 等於 Calendar.DAY_OF_MONTH,且沒有 start/end 限制。

方法詳細資訊

setStart

public void setStart(Comparable start)
更改此序列中的日期下限。如果 startnull,則不存在下限。此處不進行邊界檢查:新起始值可能會使該建構子強制執行的 (start <= value <= end) 不變式失效。這是為了簡化對該模型的更新。很自然,調用 nextValuepreviousValuesetValue 方法之前應該確保該不變式為 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)

getStart

public Comparable getStart()
返回序列中的第一個 Date

返回:
start 屬性的值
另請參見:
setStart(java.lang.Comparable)

setEnd

public void setEnd(Comparable end)
更改此序列中 Date 的上限。如果 startnull,則不存在上限。此處不進行邊界檢查:新起始值可能會使該建構子強制執行的 (start <= value <= end) 不變式失效。這是為了簡化對該模型的更新。很自然,調用 nextValuepreviousValuesetValue 方法之前應該確保該不變式為 true。

該屬性通常是一個 Date,但是它可以使用一個具有用於 DatecompareTo 方法的 Comparable。請參見 setStart 以獲得一個範例。

如果 end 已經更改,則此方法會觸發一個 ChangeEvent

參數:
end - 定義序列中的最後一個日期
另請參見:
getEnd(), setStart(java.lang.Comparable), AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)

getEnd

public Comparable getEnd()
返回序列中的最後一個 Date

返回:
end 屬性的值
另請參見:
setEnd(java.lang.Comparable)

setCalendarField

public void setCalendarField(int calendarField)
更改由 nextValuepreviousValue 方法計算的日期值更改的大小。calendarField 參數必須是其中一個 Calendar 欄位常數,如 Calendar.MONTHCalendar.MINUTEnextValuepreviousValue 方法使用 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)

getCalendarField

public int getCalendarField()
返回由 nextValuepreviousValue 方法添加或去掉的 Calendar 欄位。

返回:
calendarField 屬性的值
另請參見:
setCalendarField(int)

getNextValue

public Object getNextValue()
返回序列中的下一個 Date,如果下一個日期在 end 之後,則返回 null

指定者:
介面 SpinnerModel 中的 getNextValue
返回:
序列中的下一個 Date,如果下一個日期是在 end 之後,則返回 null
另請參見:
SpinnerModel.getNextValue(), getPreviousValue(), setCalendarField(int)

getPreviousValue

public Object getPreviousValue()
返回序列中上一個 Date,如果上一個日期是在 start 之前,則返回 null

指定者:
介面 SpinnerModel 中的 getPreviousValue
返回:
序列中上一個 Date,如果上一個日期在 start 之前,則返回 null
另請參見:
SpinnerModel.getPreviousValue(), getNextValue(), setCalendarField(int)

getDate

public Date getDate()
返回此 Date 序列中的當前元素。此方法等效於 (Date)getValue

返回:
value 屬性
另請參見:
setValue(java.lang.Object)

getValue

public Object getValue()
返回此 Date 序列中的當前元素。

指定者:
介面 SpinnerModel 中的 getValue
返回:
value 屬性
另請參見:
setValue(java.lang.Object), getDate()

setValue

public void setValue(Object value)
設置此序列的當前 Date。如果 valuenull,則拋出一個 IllegalArgumentException。此處不進行邊界檢查:新值可能會使該建構子強制執行的 (start <= value < end) 不變式失效。很自然,調用 nextValuepreviousValuesetValue 方法之前應該確保 (start <= value <= maximum) 不變式為 true。

如果 value 已經更改,則此方法會觸發一個 ChangeEvent

指定者:
介面 SpinnerModel 中的 setValue
參數:
value - 此序列的當前(非 nullDate
拋出:
IllegalArgumentException - 如果值為 null 或不是一個 Date
另請參見:
getDate(), getValue(), AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only