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

クラスJSpinner

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

    @JavaBean(defaultProperty="UI",
              description="A single line input field that lets the user select a number or an object value from an ordered set.")
    public class JSpinner
    extends JComponent
    implements Accessible
    ユーザーが、順序付けられたシーケンスから数またはオブジェクトを選択できるようにする単一行の入力フィールドです。 通常、スピナーはシーケンスの要素間を移動するための小さな矢印ボタンのペアを提供します。 キーボードの上/下矢印キーでも要素間を自由に移動できます。 ユーザーがスピナーに直接(有効な)値を入力することもできます。 コンボボックスは類似の機能を提供しますが、重要なデータを覆い隠してしまうドロップ・ダウン・リストを必要としないため、スピナーの方が好まれる場合があります。

    JSpinnerのシーケンスの値は、SpinnerModelによって定義されます。 modelは、コンストラクタの引数として指定し、modelプロパティを使用して変更できます。 一部の共通の型として、SpinnerListModelSpinnerNumberModel、およびSpinnerDateModelなどのSpinnerModelクラスが提供されます。

    JSpinnerは、モデルの現在の要素またはを表示し、変更することもできるeditorと呼ばれる単一の子コンポーネントを持ちます。 エディタは、JSpinnerのコンストラクタによって作成され、editorプロパティによって変更できます。 JSpinnerのエディタは、ChangeEventを待機することにより、モデルとの同期を維持します。 ユーザーがeditorによって表示された値を変更すると、modelの値とeditorの値が異なってしまう可能性があります。 modelの値がエディタの値と同じかどうかを確認するには、commitEditメソッドを使用します。次に例を示します。

       try {
           spinner.commitEdit();
       }
       catch (ParseException pe) {
           // Edited value is invalid, spinner.getValue() will return
           // the last valid value, you could revert the spinner to show that:
           JComponent editor = spinner.getEditor();
           if (editor instanceof DefaultEditor) {
               ((DefaultEditor)editor).getTextField().setValue(spinner.getValue());
           }
           // reset the value to some known value:
           spinner.setValue(fallbackValue);
           // or treat the last valid value as the current, in which
           // case you don't need to do anything.
       }
       return spinner.getValue();
     

    スピナーの使用方法の詳細と例については、『The Java Tutorial』の「How to Use Spinners」を参照してください。

    警告: Swingはスレッドに対して安全ではありません。 詳細は、「Swing's Threading Policy」を参照してください。

    警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4以降、すべてのJavaBeans™用の長期間の格納サポートがjava.beansパッケージに追加されています。 XMLEncoderを参照してください。

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

      • JSpinner

        public JSpinner​(SpinnerModel model)
        指定されたモデルのスピナーを構築します。 スピナーは、前/次ボタンのセットと、そのモデル用の適切なエディタを持ちます。
        パラメータ:
        model - 新しいスピナーのモデル
        例外:
        NullPointerException - モデルがnullの場合
      • JSpinner

        public JSpinner()
        初期値が0で最小値または最大値の制限がないInteger SpinnerNumberModelを持つスピナーを構築します。
    • メソッドの詳細

      • getUI

        public SpinnerUI getUI()
        このコンポーネントを描画するルック・アンド・フィール (L&F)オブジェクトを返します。
        オーバーライド:
        クラスJComponentgetUI
        戻り値:
        このコンポーネントをレンダリングするSpinnerUIオブジェクト
      • setUI

        public void setUI​(SpinnerUI ui)
        このコンポーネントを描画するルック・アンド・フィール (L&F)オブジェクトを設定します。
        パラメータ:
        ui - SpinnerUI L&Fオブジェクト
        関連項目:
        UIDefaults.getUI(javax.swing.JComponent)
      • createEditor

        protected JComponent createEditor​(SpinnerModel model)
        このメソッドは、シーケンスの現在の値を表示するJComponentを作成するために、コンストラクタによって呼び出されます。 また、エディタを使用することにより、ユーザーはシーケンスの要素を直接入力することが可能になります。 エディタはmodelChangeEventsを待機し、表示する値がモデルの値と同期するように維持する必要があります。

        サブクラスは、このメソッドをオーバーライドして、新しいSpinnerModelクラスのサポートを追加します。 また、ここで作成されたエディタを、単にsetEditorメソッドと置き換えることもできます。 モデル型からエディタへのデフォルトのマッピングは、次のとおりです。

        • SpinnerNumberModel => JSpinner.NumberEditor
        • SpinnerDateModel => JSpinner.DateEditor
        • SpinnerListModel => JSpinner.ListEditor
        • その他すべて => JSpinner.DefaultEditor

        パラメータ:
        model - getModelの値
        戻り値:
        シーケンスの現在の値を表示するコンポーネント
        関連項目:
        getModel(), setEditor(javax.swing.JComponent)
      • setModel

        @BeanProperty(visualUpdate=true,
                      description="Model that represents the value of this spinner.")
        public void setModel​(SpinnerModel model)
        このスピナーの値を表すモデルを変更します。 エディタのプロパティが明示的に設定されていない場合、エディタのプロパティは"model" PropertyChangeEventがトリガーされたあとで暗黙の内に設定されます。 エディタのプロパティは、次のようにcreateEditorによって返された値に設定されます。
         setEditor(createEditor(model));
         
        パラメータ:
        model - 新しいSpinnerModel
        例外:
        IllegalArgumentException - モデルがnullの場合
        関連項目:
        getModel(), getEditor(), setEditor(javax.swing.JComponent)
      • getValue

        public Object getValue()
        モデルの現在の値を返します。通常、この値はeditorによって表示されます。 ユーザーがeditorによって表示された値を変更すると、modelの値とeditorの値が異なってしまう可能性があります。この問題の対処方法の例については、クラス・レベルのjavadocを参照してください。

        このメソッドは単にmodelに委譲されます。 これは次と同等です。

         getModel().getValue()
         

        戻り値:
        モデルの現在の値
        関連項目:
        setValue(java.lang.Object), SpinnerModel.getValue()
      • setValue

        public void setValue​(Object value)
        モデルの現在の値を変更します。通常、この値はeditorによって表示されます。 SpinnerModelの実装が指定された値をサポートしていない場合は、IllegalArgumentExceptionがスローされます。

        このメソッドは単にmodelに委譲されます。 これは次と同等です。

         getModel().setValue(value)
         

        パラメータ:
        value - スピナーの新しい価値
        例外:
        IllegalArgumentException - valueが正当でない場合
        関連項目:
        getValue(), SpinnerModel.setValue(java.lang.Object)
      • getNextValue

        @BeanProperty(bound=false)
        public Object getNextValue()
        getValue()によって返されたオブジェクトの後にあるシーケンスのオブジェクトを返します。 シーケンスの終点に到達した場合、nullを返します。 このメソッドを呼び出しても、valueには影響しません。

        このメソッドは単にmodelに委譲されます。 これは次と同等です。

         getModel().getNextValue()
         

        戻り値:
        次の正当な値、またはそれが存在しない場合はnull
        関連項目:
        getValue(), getPreviousValue(), SpinnerModel.getNextValue()
      • addChangeListener

        public void addChangeListener​(ChangeListener listener)
        リスナーを、モデルへの変更が行われるたびに通知されるリストに追加します。 ChangeListenersに送信されたChangeEventsのソースはこのJSpinnerです。 モデルの置換えはJSpinnerに直接追加されたリスナーには影響を与えません。 アプリケーションは、リスナーをモデルに直接追加できます。 この場合は、イベントのソースはSpinnerModelとなります。
        パラメータ:
        listener - 追加するChangeListener
        関連項目:
        removeChangeListener(javax.swing.event.ChangeListener), getModel()
      • getChangeListeners

        @BeanProperty(bound=false)
        public ChangeListener[] getChangeListeners()
        addChangeListener()を使用してこのJSpinnerに追加されたすべてのChangeListenerの配列を返します。
        戻り値:
        追加されたすべてのChangeListener。リスナーが追加されていない場合は空の配列
        導入されたバージョン:
        1.4
      • getPreviousValue

        @BeanProperty(bound=false)
        public Object getPreviousValue()
        getValue()によって返されたオブジェクトの前にあるシーケンスのオブジェクトを返します。 シーケンスの終点に到達した場合、nullを返します。 このメソッドを呼び出しても、valueには影響しません。

        このメソッドは単にmodelに委譲されます。 これは次と同等です。

         getModel().getPreviousValue()
         

        戻り値:
        直前の正当な値、またはそれが存在しない場合はnull
        関連項目:
        getValue(), getNextValue(), SpinnerModel.getPreviousValue()
      • setEditor

        @BeanProperty(visualUpdate=true,
                      description="JComponent that displays the current value of the model")
        public void setEditor​(JComponent editor)
        SpinnerModelの現在の値を表示するJComponentを変更します。 このメソッドにより、古いエディタがモデルから切り離され、新しいエディタが接続されます。 これは、古いエディタのChangeListenerをモデルまたはスピナー自体から削除して、新しいエディタの変更リスナーを追加することを意味します。
        パラメータ:
        editor - 新しいエディタ
        例外:
        IllegalArgumentException - エディタがnullである場合
        関連項目:
        getEditor(), createEditor(javax.swing.SpinnerModel), getModel()
      • commitEdit

        public void commitEdit()
                        throws ParseException
        現在編集されている値をSpinnerModelにコミットします。

        エディタがDefaultEditorのインスタンスの場合、エディタに転送されたときは呼出しを行い、それ以外のときは何も処理を行いません。

        例外:
        ParseException - 現在編集されている値が確定できなかった場合。