モジュール 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)
      • 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)
      • 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)
      • getDate

        public Date getDate()
        このシーケンスのDateのうち、現在の要素を返します。 このメソッドは、(Date)getValueと同等です。
        戻り値:
        valueプロパティ
        関連項目:
        setValue(java.lang.Object)
      • 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)