SpinnerNumberModelクラスの定義とコンストラクタ

広告

SpinnerModelインターフェースの実装クラスの1つであるSpinnerNumberModelクラスを利用する方法です。SpinnerNumberModelクラスは数値をデータモデルのデータとして利用する場合に使います。

SpinnerNumberModelクラスの定義を確認します。クラス図は次のようになっています。

  • java.lang.Object
  • javax.swing.AbstractSpinnerModel
  • javax.swing.SpinnerNumberModel
  • public class SpinnerNumberModel extends AbstractSpinnerModel implements Serializable

SpinnerNumberModelはAbstractSpinnerModelクラスのサブクラスとなっています。AbstractSpinnerModelクラスはSpinnerModelインターフェースを実装したクラスでベースとなっているクラスです。

SpinnerNumberModelクラスのコンストラクタ

SpinnerNumberModelクラスをを利用するにはコンストラクタを使ってSpinnerNumberModelクラスのオブジェクトを作成します。どのようなコンストラクタが用意されているか確認してみます。

コンストラクタ
SpinnerNumberModel()
minimum または maximum の値がなく、stepSize が 1、初期値が 0 の SpinnerNumberModel を構築します。
SpinnerNumberModel(double value, double minimum, double maximum, double stepSize)
value、境界 (minimum/maximum)、および stepSize を指定して SpinnerNumberModel を構築します。
SpinnerNumberModel(int value, int minimum, int maximum, int stepSize)
value、境界 (minimum/maximum)、および stepSize を指定して SpinnerNumberModel を構築します。
SpinnerNumberModel(Number value, Comparable minimum, Comparable maximum, Number stepSize)
minimum から maximum までの数値から成る閉じたシーケンスを表す SpinnerModel を構築します。

コンストラクタは4つ用意されています。4番目のコンストラクタが一番汎用的なタイプとなりますが、利用される機会が多いint型とdouble型を扱うためのコンストラクタが用意されています。

では1番目のコンストラクタを確認してみます。

minimum または maximum の値がなく、stepSize が 1、初期値が 0 の 
SpinnerNumberModel を構築します。

最小値及び最大値の上限が無く初期値が「0」でありボタンクリックによる値の変動の単位が「1」のデータモデルです。これは「SpinnerNumberModel(0, null, null, 1)」とした場合と同じです。

実際の使い方は次のようになります。

SpinnerNumberMod model = new SpinnerNumberMod();
JSpinner spinner = new JSpinner(model);

サンプルプログラム

では簡単なサンプルを作成して試してみます。

JSpinnerTest10.java

import javax.swing.*;
import java.awt.Dimension;
import java.awt.BorderLayout;

public class JSpinnerTest10 extends JFrame{

  public static void main(String[] args){
    JSpinnerTest10 frame = new JSpinnerTest10();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  JSpinnerTest10(){

    SpinnerNumberModel model = new SpinnerNumberModel();

    JSpinner spinner = new JSpinner(model);
    spinner.setPreferredSize(new Dimension(100, 25));

    JPanel p = new JPanel();
    p.add(spinner);

    getContentPane().add(p, BorderLayout.CENTER);
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

SpinnerNumberModelのサンプル

初期値が「0」でボタンクリックによる値の変動幅が「1」のスピナーが作成されます。最大値及び最小値は設定されていませんのでプラスにもマイナスにも制限無く移動が可能です。

SpinnerNumberModelのサンプル

SpinnerNumberModelのサンプル

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)