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

クラスSpinnerNumberModel

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

    public class SpinnerNumberModel
    extends AbstractSpinnerModel
    implements Serializable
    数値のシーケンスを表すSpinnerModelです。 シーケンスの上限と下限は、minimumおよびmaximumというプロパティによって定義します。 nextValueメソッドとpreviousValueメソッドによって計算される増加分または減少分は、stepSizeというプロパティによって定義します。 シーケンスに上限または下限のないことを示すために、minimumプロパティおよびmaximumプロパティをnullにすることができます。 このクラスのプロパティはすべて、NumberおよびComparableという2つのジェネリック型によって定義するため、Javaの数値型のすべてに対応できます。 内部的には、基本的なNumber型を持つ値、つまり、DoubleFloatLongIntegerShortByteのどれかの型を持つ値しかサポートしていません。

    初期値が50で、0から100の整数を表すSpinnerNumberModelを作成するには、次のように記述できます。

     Integer value = Integer.valueOf(50);
     Integer min = Integer.valueOf(0);
     Integer max = Integer.valueOf(100);
     Integer step = Integer.valueOf(1);
     SpinnerNumberModel model = new SpinnerNumberModel(value, min, max, step);
     int fifty = model.getNumber().intValue();
     

    Integer型とDouble型のスピナーが一般的なので、これらの型に対応した専用のコンストラクタが用意されています。 たとえば、前の例のモデルを作成する場合、次のように記述することもできます。

     SpinnerNumberModel model = new SpinnerNumberModel(50, 0, 100, 1);
     

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

    導入されたバージョン:
    1.4
    関連項目:
    JSpinner, SpinnerModel, AbstractSpinnerModel, SpinnerListModel, SpinnerDateModel, 「直列化されたフォーム」
    • コンストラクタの詳細

      • SpinnerNumberModel

        public SpinnerNumberModel​(Number value,
                                  Comparable<?> minimum,
                                  Comparable<?> maximum,
                                  Number stepSize)
        minimumからmaximumまでの数値から成る閉じたシーケンスを表すSpinnerModelを構築します。 nextValueメソッドとpreviousValueメソッドは、stepSizeを加算または減算して、シーケンスの要素を計算します。 パラメータはすべて、互いにComparableである必要があり、valuestepSizeは、IntegerLongFloat、またはDoubleのインスタンスである必要があります。

        シーケンスの範囲に上限または下限のないことを示すために、minimumパラメータとmaximumパラメータをnullにすることができます。 valueまたはstepSizenullの場合、あるいはminimummaximumの両方が指定されており、minimum > maximumの場合、IllegalArgumentExceptionがスローされます。 同様に、(minimum <= value <= maximum)がfalseの場合も、IllegalArgumentExceptionがスローされます。

        パラメータ:
        value - モデルの現在の値(null以外)
        minimum - シーケンスの先頭の数値またはnull
        maximum - シーケンスの最後の数値またはnull
        stepSize - シーケンスの要素間の差
        例外:
        IllegalArgumentException - stepSizeまたはvalueがnullの場合、あるいはminimum <= value <= maximumがfalseの場合
      • SpinnerNumberModel

        public SpinnerNumberModel​(int value,
                                  int minimum,
                                  int maximum,
                                  int stepSize)
        指定されたvalueminimum/maximumバウンド、およびstepSizeSpinnerNumberModelを構築します。
        パラメータ:
        value - モデルの現在値
        minimum - シーケンスの先頭の数値
        maximum - シーケンスの最後の数値
        stepSize - シーケンスの要素間の差
        例外:
        IllegalArgumentException - 次の式がfalseの場合: minimum <= value <= maximum
      • SpinnerNumberModel

        public SpinnerNumberModel​(double value,
                                  double minimum,
                                  double maximum,
                                  double stepSize)
        指定されたvalueminimum/maximumバウンド、およびstepSizeSpinnerNumberModelを構築します。
        パラメータ:
        value - モデルの現在値
        minimum - シーケンスの先頭の数値
        maximum - シーケンスの最後の数値
        stepSize - シーケンスの要素間の差
        例外:
        IllegalArgumentException - 次の式がfalseの場合: minimum <= value <= maximum
      • SpinnerNumberModel

        public SpinnerNumberModel()
        minimumまたはmaximumの値がなく、stepSizeが1、初期値が0のSpinnerNumberModelを構築します。
    • メソッドの詳細

      • setMinimum

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

        通常、このプロパティはvalueと同じ型のNumberですが、Comparableで、valueと同じ型のNumberに対するcompareToメソッドを使用できます。 たとえば、valueがLongの場合、minimumを、次のように定義されたDateサブクラスにすることができます。

         MyDate extends Date {  // Date already implements Comparable
             public int compareTo(Long o) {
                 long t = getTime();
                 return (t < o.longValue() ? -1 : (t == o.longValue() ? 0 : 1));
             }
         }
         

        minimumが変更されると、このメソッドはChangeEventをトリガーします。

        パラメータ:
        minimum - valueと同じ型のNumberに対するcompareToメソッドを持つComparable
        関連項目:
        getMinimum(), setMaximum(java.lang.Comparable<?>), SpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
      • setMaximum

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

        通常、このプロパティはvalueと同じ型のNumberですが、Comparableで、valueと同じ型のNumberに対するcompareToメソッドを使用できます。 例についてはsetMinimum(Comparable)を参照してください。

        maximumが変更されると、このメソッドはChangeEventをトリガーします。

        パラメータ:
        maximum - valueと同じ型のNumberに対するcompareToメソッドを持つComparable
        関連項目:
        getMaximum(), setMinimum(java.lang.Comparable<?>), SpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
      • setStepSize

        public void setStepSize​(Number stepSize)
        getNextValueメソッドとgetPreviousValueメソッドによって計算される値変更のサイズを変更します。 stepSizenullの場合、IllegalArgumentExceptionがスローされます。

        stepSizeが変更されると、このメソッドはChangeEventをトリガーします。

        パラメータ:
        stepSize - getNextValueメソッドとgetPreviousValueメソッドによって計算される値変更のサイズ
        関連項目:
        getNextValue(), getPreviousValue(), getStepSize(), SpinnerModel.addChangeListener(javax.swing.event.ChangeListener)
      • getStepSize

        public Number getStepSize()
        getNextValueメソッドとgetPreviousValueメソッドによって計算される値変更のサイズを返します。
        戻り値:
        stepSizeプロパティの値
        関連項目:
        setStepSize(java.lang.Number)
      • getNumber

        public Number getNumber()
        シーケンスの現在の要素の値を返します。
        戻り値:
        valueプロパティ
        関連項目:
        setValue(java.lang.Object)
      • setValue

        public void setValue​(Object value)
        このシーケンスの現在値を設定します。 valuenullの場合、あるいはNumberでない場合、IllegalArgumentExceptionがスローされます。 ここでは、境界のチェックは行われません。つまり、新しい値が、コンストラクタによって適用される不変式(minimum <= value <= maximum)を無効にすることがあります。 シーケンスで起こりえない値、つまりstepSizeのモジュロでない値を、値に設定する可能性もあります。 これは、モデルの更新を単純にするためであり、ユーザーが直接入力した値に制限を加えないスピナーに対応するためでもあります。 当然、nextprevioussetValueの各メソッドを呼び出す前に、不変式(minimum <= value <= maximum)がtrueになるようにする必要があります。

        valueが変更されると、このメソッドはChangeEventをトリガーします。

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