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

クラスSpinnerNumberModel

java.lang.Object
javax.swing.AbstractSpinnerModel
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
関連項目:
  • コンストラクタの詳細

    • 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

      public Comparable<?> getMinimum()
      このシーケンスの先頭の数値を返します。
      戻り値:
      minimumプロパティの値
      関連項目:
    • 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

      public Comparable<?> getMaximum()
      シーケンスの最後の数値を返します。
      戻り値:
      maximumプロパティの値
      関連項目:
    • setStepSize

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

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

      パラメータ:
      stepSize - getNextValueメソッドとgetPreviousValueメソッドによって計算される値変更のサイズ
      関連項目:
    • getStepSize

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

      public Object getNextValue()
      シーケンスの次の数値を返します。
      定義:
      getNextValue、インタフェース: SpinnerModel
      戻り値:
      value+stepSize、この値がmaximumを超える場合はnull
      関連項目:
    • getPreviousValue

      public Object getPreviousValue()
      シーケンスの前の数値を返します。
      定義:
      getPreviousValue、インタフェース: SpinnerModel
      戻り値:
      value - stepSize、この値がminimum未満である場合はnull
      関連項目:
    • getNumber

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

      public Object getValue()
      シーケンスの現在の要素の値を返します。
      定義:
      getValue、インタフェース: SpinnerModel
      戻り値:
      valueプロパティ
      関連項目:
    • 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でない場合
      関連項目: