モジュール java.desktop
パッケージ javax.swing

クラスSpinnerDateModel

すべての実装されたインタフェース:
Serializable, SpinnerModel

public class SpinnerDateModel extends AbstractSpinnerModel implements Serializable
DateのシーケンスのSpinnerModelです。 シーケンスの上限と下限は、startおよびendというプロパティによって定義します。nextValueメソッドとpreviousValueメソッドによって計算される増加分または減少分は、calendarFieldというプロパティによって定義します。 シーケンスに上限または下限のないことを示すために、startプロパティおよびendプロパティをnullにできます。

calendarFieldプロパティの値は、Calendar内のフィールドを指定するjava.util.Calendar定数のいずれかである必要があります。 getNextValueメソッドとgetPreviousValueメソッドは、この定数に基づいて日付を前後に変更します。 たとえば、calendarFieldCalendar.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
ただし、一部のUIではcalendarFieldを設定してから、編集を確定してカーソルの下にあるフィールドをスピンできます。 1フィールドのみをスピンする場合は、setCalendarFieldの呼出しをサブクラス化して無視できます。

このモデルはChangeListenerを継承します。 モデルのvaluecalendarFieldstartendの各プロパティが変更されたときには、ChangeListenersに変更が通知されます。

導入されたバージョン:
1.4
関連項目:
JSpinner, SpinnerModel, AbstractSpinnerModel, SpinnerListModel, SpinnerNumberModel, Calendar.add(int, int)
  • コンストラクタの詳細

    • SpinnerDateModel

      public SpinnerDateModel(Date value, Comparable<Date> start, Comparable<Date> end, int calendarField)
      startからendまでの日付のシーケンスを表すSpinnerDateModelを作成します。 nextValueメソッドとpreviousValueメソッドは、現在の日付であるvaluecalendarFieldのタイム・ユニット分前進または後退させて、シーケンスの要素を計算します。 Calendar fieldの増加または減少についての詳細は、java.util.Calendaraddメソッドを参照してください。

      シーケンスの範囲に上限または下限のないことを示すために、startパラメータとendパラメータを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 - valueまたはcalendarFieldnullの場合、calendarFieldが有効でない場合、または(start <= value <= end)がfalseである場合。
      関連項目:
      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()
      最初のvalueが現在の日付で、calendarFieldCalendar.DAY_OF_MONTHに等しく、startendの限度がないSpinnerDateModelを構築します。
  • メソッドの詳細

    • setStart

      public void setStart(Comparable<Date> start)
      このシーケンスのDateの下限を変更します。 startnullの場合、下限はありません。 ここでは、境界のチェックは行われません。つまり、新しいstartの値が、コンストラクタによって適用される不変式(start <= value <= end)を無効にすることがあります。 これは、モデルの更新を単純にするためです。 当然、nextValuepreviousValuesetValueの各メソッドを呼び出す前に、不変式がtrueになるようにする必要があります。

      通常、このプロパティはDateですが、ComparableでDateに対する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);
           }
       }
       
      上記の例では、compareTo(Object)に渡されたObjectDateでない場合、ClassCastExceptionがスローされます。

      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の上限を変更します。 startnullの場合、上限はありません。 ここでは、境界のチェックは行われません。つまり、新しいstartの値が、コンストラクタによって適用される不変式(start <= value <= end)を無効にすることがあります。 これは、モデルの更新を単純にするためです。 当然、nextValuepreviousValuesetValueの各メソッドを呼び出す前に、不変式がtrueになるようにする必要があります。

      通常の場合、このプロパティはDateですが、ComparableDateに対するcompareToメソッドを使うことができます。 例については、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.MONTHCalendar.MINUTEなど、Calendarフィールドの定数のいずれかである必要があります。 nextValueメソッドとpreviousValueメソッドは、指定されたCalendarフィールドを、Calendar.addによって1ユニットずつ前後に移動するだけです。 一部のUIではcalendarFieldを設定してから、編集を確定してカーソルの下にあるフィールドをスピンできるため、このメソッドを使用するときは注意が必要です。 1フィールドのみをスピンする場合は、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を返します。次の日付がendよりあとの場合はnullを返します。
      定義:
      getNextValue、インタフェース: SpinnerModel
      戻り値:
      シーケンスの次のDate。次の日付がendよりあとの場合はnull
      関連項目:
      SpinnerModel.getNextValue(), getPreviousValue(), setCalendarField(int)
    • getPreviousValue

      public Object getPreviousValue()
      シーケンスの前のDateを返します。前の日付がstartより前の場合はnullを返します。
      定義:
      getPreviousValue、インタフェース: SpinnerModel
      戻り値:
      シーケンスの前の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のうち、現在の要素を返します。
      定義:
      getValue、インタフェース: SpinnerModel
      戻り値:
      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をトリガーします。

      定義:
      setValue、インタフェース: SpinnerModel
      パラメータ:
      value - このシーケンスの現在のDate (null以外)
      例外:
      IllegalArgumentException - valueがnullの場合、またはDateでない場合
      関連項目:
      getDate(), getValue(), AbstractSpinnerModel.addChangeListener(javax.swing.event.ChangeListener)